list_ndarray_csr_lil占用空间比较

feature为(3312, 3312)的稀疏特征矩阵,里面的值全为0或1。由于比较好奇各种存储矩阵的方式之间占用空间的差异,所以做了个实验:

# env
Ubuntu16.04 64位
python3.5
pycharm

# experiment

#list
print(sys.getsizeof(feature))

feature_int64 = np.asarray(feature)
feature_int8 = np.asarray(feature, dtype=np.int8)
# ndarray
print(sys.getsizeof(feature_int64))
print(sys.getsizeof(feature_int8))
# csr
print(sys.getsizeof(scipy.sparse.csr_matrix(feature_int64)))
print(sys.getsizeof(scipy.sparse.csr_matrix(feature_int8)))
# lil
print(sys.getsizeof(scipy.sparse.lil_matrix(feature_int64)))
print(sys.getsizeof(scipy.sparse.lil_matrix(feature_int8)))

output:

26736     list

98114800  ndarray int64
12264448  ndarray int8

56        csr int64
56        csr int8

56        lil int64
56        lil int8

可见,csr与lil在这里的占用空间情况相近,list次之,ndarray为最,并且受数据类型影响明显。

按定义来看,lil的读写方式比csr的方便直观一些,csr会有点绕。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容