配列をファイルからpython(numpy.array)にインポートするにはどうすればいいですか?.
たとえば、マトリックスをファイルに保存してから、ロードし直します。
numpyサンプルリスト のエントリをチェックアウトします。これが.loadtxt()のエントリです
>>> from numpy import *
>>>
>>> data = loadtxt("myfile.txt") # myfile.txt contains 4 columns of numbers
>>> t,z = data[:,0], data[:,3] # data is 2D numpy array
>>>
>>> t,x,y,z = loadtxt("myfile.txt", unpack=True) # to unpack all columns
>>> t,z = loadtxt("myfile.txt", usecols = (0,3), unpack=True) # to select just a few columns
>>> data = loadtxt("myfile.txt", skiprows = 7) # to skip 7 rows from top of file
>>> data = loadtxt("myfile.txt", comments = '!') # use '!' as comment char instead of '#'
>>> data = loadtxt("myfile.txt", delimiter=';') # use ';' as column separator instead of whitespace
>>> data = loadtxt("myfile.txt", dtype = int) # file contains integers instead of floats
別のオプションは numpy.genfromtxt
、例:
import numpy as np
data = np.genfromtxt("myfile.dat",delimiter=",")
これにより、data
は、ファイル内にあるのと同じ数の行と列を持つnumpy配列になります
(質問が古いことは知っていますが、これは同様の質問を持つ人々の参考資料としては良いと思います)
ASCII /テキストファイルからデータをロードしたい場合(これには利点があり、多かれ少なかれ人間が読める形式で、他のソフトウェアで簡単に解析できます)、numpy.loadtxtがおそらく必要です。
Numpyの配列/行列をファイルにすばやく保存してロードするだけの場合は、numpy.saveとnumpy.loadを見てください。
Pythonでは、裸のpythonリストをnumpy.arrayとして保存し、それをファイルに保存してからロードし直して、リストに変換し直すと、いくつかの変換トリックが実行されます。混乱は次のとおりです。 pythonリストはnumpy.arraysとまったく同じではないためです。
_import numpy as np
foods = ['grape', 'cherry', 'mango']
filename = "./outfile.dat.npy"
np.save(filename, np.array(foods))
z = np.load(filename).tolist()
print("z is: " + str(z))
_
これは印刷します:
_z is: ['grape', 'cherry', 'mango']
_
ファイル名としてディスクに保存されます:_outfile.dat.npy
_
ここで重要なメソッドは、tolist()
およびnp.array(...)
変換関数です。
SciPyクックブック をご覧ください。/exportデータをインポートするためのいくつかの基本的な方法のアイデアを与えるはずです。
独自のPythonプログラムからファイルを保存/ロードする場合、 Pickle モジュールまたはcPickleを検討することもできます。