np.hstack()中的内存错误

时间:2011-05-11 14:13:09

标签: python numpy memory-management out-of-memory

我正在尝试执行此代码:

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的最大尺寸?

1 个答案:

答案 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。