【发布时间】:2018-10-19 17:39:18
【问题描述】:
我有一个 .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.arrray相比,为什么numpy.matrix对象占用的内存非常小? a 和 b 具有相同的维度和数据。
【问题讨论】:
-
如果您使用
.toarray(),您将获得完整尺寸。.todense在其上添加asmatrix层,创建视图。那是一个实现细节。一般来说getsizeof不是一个可靠的衡量标准。它有点适用于数组,但对列表毫无价值。