【发布时间】:2017-02-27 04:44:14
【问题描述】:
当我在下面运行代码时:
import scipy.sparse
x = scipy.sparse.random(100000, 100000, 1e-4)
y = x.toarray()
print(y.nbytes)
我得到 80000000000 字节 = 80 GB 的输出。然而我使用的是只有 4 GB RAM 的 Macbook Air。有人可以解释一下我是如何(显然)创建一个大于我的内存大小的 NumPy 数组吗? y 在某种程度上是 x 的视图,而不是副本?我在scipy.sparse 文档中没有找到任何关于此的内容。毫不奇怪,如果我执行y.copy() 之类的操作,我会使 Python 崩溃……我不能指望对大小为 10^10 的数组做某事。谢谢!
版本: Python 3.5.2 通过 Anaconda 4.1.1、SciPy 0.17.1、NumPy 1.11.1。
【问题讨论】:
-
我尝试创建
np.zeros数组,nbytes接近 40GB。但实际使用的内存不到1GB。
标签: python numpy memory scipy sparse-matrix