当我运行以下代码时:
/sbconsole/
我得到的输出为80000000000字节= 80 GB。然而,我使用的Macbook Air只有4 GB的RAM。有人可以解释我(显然)创建一个大于我的内存大小的NumPy数组吗? import scipy.sparse
x = scipy.sparse.random(100000, 100000, 1e-4)
y = x.toarray()
print(y.nbytes)
以某种方式是y
的视图,而不是副本吗?我在x
文档中没有找到任何相关内容。不出所料,如果我做scipy.sparse
之类的事情,我会崩溃Python ......我不能指望对10 ^ 10大小的数组做些什么。谢谢!
版本: Python 3.5.2通过Anaconda 4.1.1,SciPy 0.17.1,NumPy 1.11.1。
答案 0 :(得分:0)
这是因为numpy实际上没有分配所有空间。很可能稀疏数组和矩阵用triplets, linked nodes或其他一些忽略之间所有空白空间的方法表示。字节是根据矩阵/数组的指定维度计算的,而不是内存中的实际数据。