Я недавно работал с большими матрицами.Мои входные данные хранятся в виде файлов размером 15 ГБ .npz
, которые я пытаюсь читать постепенно, небольшими партиями.
Я знаком с отображением памяти, и, увидев, numpy
также поддерживает подобные операцииказалось идеальным решением.Однако проблема, с которой я сталкиваюсь, заключается в следующем:
Сначала я загружаю матрицу с помощью:
foo = np.load('matrix.npz',mmap_mode="r+")
foo
имеет один ключ: data
.
Когда я пытаюсь, например, сделать:
foo['data'][1][1]
numpy
, кажется, бесконечно тратит доступную оперативную память, почти как если бы не было сопоставления памяти.Я что-то не так делаю?
Моей целью было бы, например, прочитать 30 строк за раз:
for x in np.arange(0,matrix.shape[1],30):
batch = matrix[x:(x+30),:]
do_something_with(batch)
Спасибо!