我正在尝试执行此代码:
for i in Fil:
for k in DatArr:
a = np.zeros(0)
for j in Bui:
a = np.hstack([a,DatDifCor[k][i,j]])
DatDifPlt[k].update({i:a})
但它给了我这个错误:
Traceback (most recent call last):
File "<ipython console>", line 5, in <module>
File "C:\Python26\lib\site-packages\numpy\core\shape_base.py", line 258, in hstack
return _nx.concatenate(map(atleast_1d,tup),1)
MemoryError
我认为这是由于首先缺少RAM内存,但后来我在一台装有48 Gb RAM的PC上尝试过,它也给出了同样的错误。我是否达到了NumPy.array的最大尺寸?
答案 0 :(得分:2)
MemoryError
始终表示尝试分配内存失败。尝试创建大于最大数组大小的数组会产生ValueError
:
>>> a = numpy.arange(500000000)
>>> numpy.hstack((a, a))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/pymodules/python2.6/numpy/core/shape_base.py", line 258, in hstack
return _nx.concatenate(map(atleast_1d,tup),1)
ValueError: array is too big.
请注意,48 GB也是一个有限的内存,您的操作系统(甚至硬件平台)可能会将单个进程的大小限制为4 GB。