2017-02-22 14 views
1

У меня есть 166600 numpy файлов, я хочу поместить их в один файл numpy: файл по файлу, Я имею в виду, что создание моего нового большого файла должно начинаться с начала: первый файл должен быть прочитан и записан в файл, поэтому большой файл содержит только первый файл, после чего мне нужно прочитать и записать второй файл, поэтому большой файл содержит первые два файла.Как поместить много numpy-файлов в один большой файл numpy, файл по файлу?

import matplotlib.pyplot as plt 
import numpy as np 
import glob 
import os, sys 
fpath ="path_Of_my_final_Big_File" 
npyfilespath ="path_of_my_numpy_files" 
os.chdir(npyfilespath) 
npfiles= glob.glob("*.npy") 
npfiles.sort() 
all_arrays = np.zeros((166601,8000)) 
for i,npfile in enumerate(npfiles): 
    all_arrays[i]=np.load(os.path.join(npyfilespath, npfile)) 
np.save(fpath, all_arrays) 
+0

https://docs.scipy.org/doc/numpy/reference/generated/numpy.savez.html#numpy.savez – Dadep

ответ

1

Если я понимаю ваши вопросы правильно, вы можете использовать numpy.concatenate для этого:

import matplotlib.pyplot as plt 
import numpy as np 
import glob 
import os, sys 
fpath ="path_Of_my_final_Big_File" 
npyfilespath ="path_of_my_numpy_files" 
os.chdir(npyfilespath) 
npfiles= glob.glob("*.npy") 
npfiles.sort() 
all_arrays = [] 
for i, npfile in enumerate(npfiles): 
    all_arrays.append(np.load(os.path.join(npyfilespath, npfile))) 
np.save(fpath, np.concatenate(all_arrays)) 

В зависимости от формы ваших массивов и предполагаемой конкатенации, возможно, потребуется указать параметр concatenateaxis ,

+0

Но numpy.savez даст мне архивный файл, мне нужно просто NumPy несжатый файл –

+0

Документ утверждает: «Сохраните несколько массивов в один файл в несжатом формате .npz». Он просто использует zipped-файл, так что все отдельные файлы могут быть индивидуально найдены в архиве. Или вы хотите сохранить конкатенацию всех своих массивов как единый массив? – languitar

+0

Я хочу сохранить конкатенацию всех ваших массивов как один массив в том же файле numpy. Я имею в виду, что мой файл будет содержать только один большой массив, содержащий множество массивов. –