Numpy Matrix内存大小比Numpy Array低

时间:2018-10-19 17:39:19

标签: python numpy

我有一个.npz文件,我想将其加载到RAM中。压缩文件大小为30MB。我正在执行以下操作将数据加载到RAM。

import numpy as np
from scipy import sparse
from sys import getsizeof

a = sparse.load_npz('compressed/CRS.npz').todense()
getsizeof(a)
# 136
type(a)
# numpy.matrixlib.defmatrix.matrix
b = np.array(a)
getsizeof(b)
# 64000112
type(b)
# numpy.ndarray

numpy.matrix相比,numpy.arrray对象为什么占用的内存很小? a和b都具有相同的维度和数据。

1 个答案:

答案 0 :(得分:3)

您的a矩阵是另一个数组的视图,因此基础数据不会计入其getsizeof。您可以通过检查a.base is not None或查看{{1}中的OWNDATA标志为False来看到此情况。

您的a.flags数组不是视图,因此基础数据计入其b

getsizeof不能节省任何内存。