У меня есть файл npz 3.374Gb, myfile.npz
.
Я могу прочитать его и просмотреть имена файлов:
a = np.load('myfile.npz')
a.files
дает
['arr_1','arr_0']
Я могу читать в 'arr_1' ok
a1=a['arr_1']
Однако я не могу загрузить в arr_0
или прочитать его форму:
a1=a['arr_0']
a['arr_0'].shape
обе вышеперечисленные операции дают следующую ошибку:
ValueError: array is too big
У меня 16Gb RAM, из которых доступно 8.370Gb. Таким образом, проблема не связана с памятью. Мои вопросы:
-
Должен ли я прочитать этот файл?
-
Может ли кто-нибудь объяснить эту ошибку?
-
Я искал использование
np.memmap
, чтобы обойти это - это разумный подход? -
Какой подход отладки следует использовать?
EDIT:
Я получил доступ к компьютеру с большим объемом оперативной памяти (48 ГБ) и загрузился. dtype
был фактически complex128
, а несжатая память a['arr_0']
составляла 5750784000 байт. Похоже, что накладные расходы RAM могут потребоваться. Либо это, либо мое предсказанное количество доступной ОЗУ было неправильным (я использовал WindowsSysinternals RAMmap).