Читать в массиве массивов из файла пиксель за пикселем? - PullRequest
0 голосов
/ 29 августа 2018

Скажем, у меня есть тысячи двумерных массивов (каждая имеет форму 600x600), сохраненных в текстовом файле. Я хотел бы прочитать файл попиксельно для каждого массива и работать с одномерным массивом этих пикселей, не загружая весь файл, так как это потребовало бы много памяти.

Например, если это было в моем файле:

array([[1, 42, 98, ..., 2], ..., [89, 10, 76, ..., 2]]), array([[36, 79, 13, ..., 11], [81, 101, 34, ..., 109]]), ...

Я бы тогда хотел (для позиции [0] [0]) [1, 36, ...], для [0] [1] я хотел бы [42, 79, ...] и так далее. После того, как я закончу работать с каждым одномерным массивом, я хотел бы удалить его из памяти и перейти к чтению следующего. Это возможно? Это также не должно быть из текстового файла, если другой тип файла будет работать лучше.

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете работать с numpy memmap . Загрузите массив как обычно, используя np.load с параметром mmap_mode, установленным в True. Из документов:

Создать карту памяти для массива, хранящегося в двоичном файле на диске.

Файлы с отображением в памяти используются для доступа к небольшим сегментам больших файлов на диске без считывания всего файла в память. Memmap в NumPy похожи на массивы объекты.

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