Ошибка памяти в np.hstack () - PullRequest
1 голос
/ 11 мая 2011

Я пытаюсь выполнить этот код:

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

Сначала я подумал, что это из-за нехватки оперативной памяти, но потом попробовал на ПК с 48 ГБ ОЗУ, и он выдал ту же ошибку. Достиг ли я максимального размера массива NumPy.array?

1 Ответ

2 голосов
/ 11 мая 2011

A 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 ГБ - это также ограниченный объем памяти, и что ваша операционная система (или даже аппаратная платформа) может ограничить размер одного процесса до 4 ГБ.

...