Добавить файл npy в другой файл npy с одинаковым количеством столбцов в обоих файлах

Размер файлов npy составляет около 5 ГБ, а объем оперативной памяти - около 5 ГБ, поэтому они не могут загружать оба массива. Как загрузить один файл npy и добавить его строки в другой файл npy, не загружая его

1 ответ

Файл npy - это заголовок, содержащий тип данных (метаданные) и форму, за которыми следуют сами данные.

Заголовок заканчивается '\n' (новая строка) персонажа. Итак, откройте ваш первый файл в режиме добавления, затем откройте второй файл в режиме чтения, пропустите заголовок readline()затем скопируйте куски (используя read(size)) из второго файла в первый.

Осталось только одно: обновить поле формы (длины) в заголовке. И здесь это становится немного сложнее, потому что, если два файла имели, например, формы (700,) а также (400,)новая форма должна быть (1300,) но у вас может не быть места в заголовке для этого. Это зависит от того, сколько символов пэда было в исходном заголовке - иногда у вас будет место, а иногда - нет. Если места нет, вам нужно записать новый заголовок в новый файл, а затем скопировать данные из обоих исходных файлов. Тем не менее, это не займет много памяти или времени, только немного дополнительного дискового пространства.

Вы можете увидеть код, который читает и записывает npy файлы здесь: https://github.com/numpy/numpy/blob/master/numpy/lib/format.py - есть некоторые недокументированные функции, которые могут оказаться полезными в вашем квесте.

Другие вопросы по тегам