Конвертировать список в массив numpy без использования большого количества оперативной памяти - PullRequest
1 голос
/ 10 февраля 2020

Я хотел бы преобразовать список с формой (1200, 140, 150, 130) в массив numpy, но стандарт numpydata = np.array(mylist) использует много памяти.

Есть ли меньше памяти способ сделать это?

1 Ответ

0 голосов
/ 10 февраля 2020

Если есть память для окончательного результата, но np.array внутреннее устройство использует слишком много памяти, вы можете обойти этот процесс обработки списка в блоках. Например:

In [236]: res = np.zeros((10,3,4),int)                                                         
In [237]: alist = np.random.randint(0,10,(10,3,4)).tolist()                                    
In [238]: for i,row in enumerate(alist): 
     ...:     res[i] = row 
In [240]: np.allclose(res, np.array(alist))                                                    
Out[240]: True

Для небольших массивов эта итерация будет медленнее, но для больших массивов проблемы с управлением памятью могут перевесить затраты на итерацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...