Возможно ли создать файл .npy без выделения соответствующего массива в памяти?
Мне нужно создать и работать с большим массивом numpy, слишком большим для создания в памяти. Numpy поддерживает сопоставление памяти, но насколько я могу видеть, мои параметры:
-
Создайте memmapped файл с помощью numpy.memmap. Это создает файл непосредственно на диске без выделения памяти, но не сохраняет метаданные, поэтому, когда я повторно перепечатываю файл позже, мне нужно знать его тип, форму и т.д. Далее следует заметить, что не указывать результаты формы в memmap интерпретируется как плоский массив:
In [77]: x=memmap('/tmp/x', int, 'w+', shape=(3,3)) In [78]: x Out[78]: memmap([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) In [79]: y=memmap('/tmp/x', int, 'r') In [80]: y Out[80]: memmap([0, 0, 0, 0, 0, 0, 0, 0, 0])
-
Создайте массив в памяти, сохраните его с помощью numpy.save, после чего его можно загрузить в режиме memmapped. Это записывает метаданные с данными массива на диск, но требует, чтобы память была распределена для всего массива хотя бы один раз.