我有一个.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都具有相同的维度和数据。
答案 0 :(得分:3)
您的a
矩阵是另一个数组的视图,因此基础数据不会计入其getsizeof
。您可以通过检查a.base is not None
或查看{{1}中的OWNDATA
标志为False
来看到此情况。
您的a.flags
数组不是视图,因此基础数据计入其b
。
getsizeof
不能节省任何内存。