
feature为(3312, 3312)的稀疏特征矩阵,里面的值全为0或1。由于比较好奇各种存储矩阵的方式之间占用空间的差异,所以做了个实验:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
Ubuntu16.04 64位 python3.5 pycharm
print(sys.getsizeof(feature))
feature_int64 = np.asarray(feature) feature_int8 = np.asarray(feature, dtype=np.int8)
print(sys.getsizeof(feature_int64)) print(sys.getsizeof(feature_int8))
print(sys.getsizeof(scipy.sparse.csr_matrix(feature_int64))) print(sys.getsizeof(scipy.sparse.csr_matrix(feature_int8)))
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会有点绕。
近期评论