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会有点绕。

你可能感兴趣的:(list_ndarray_csr_lil占用空间比较)