2017-02-22 5 views
1

私は166600個のnumpyファイルを持っています。私はそれらをnumpyファイルに入れたい: 私の新しい大きなファイルの作成は、beginから始める必要があります。最初のファイルを読み込んでファイルに書き込む必要があります。したがって、大きなファイルには最初のファイルのみが含まれ、その後は2番目のファイルを読み書きする必要があるため、大きなファイルには最初の2つのファイルが含まれます。多くのnumpyファイルを1つの大きな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の非圧縮ファイルを必要とする、私のZIPファイルをnumpy.savez与える –

+0

ドキュメントには、「複数の配列を非圧縮の.npz形式で1つのファイルに保存する」と記載されています。圧縮されたファイルを使用するだけで、すべての個々のファイルをアーカイブ内で個別に見つけることができます。または、すべての配列の連結を単一の配列として保存したいですか? – languitar

+0

すべての配列の連結を同じnumpyファイル内の単一の配列として保存します。私のファイルには、多くの配列を含む1つの大きな配列だけが含まれます。 –

関連する問題