2009-11-25 15 views
11

ファイルから配列をpython(numpy.arry)にインポートするにはどうすればいいですか?ファイルが存在しない場合は、書き込む必要があります。Pythonで配列をインポート

たとえば、行列にファイルを保存してから読み込みます。

答えて

19

numpy example listのエントリをチェックアウトします。ここ.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 
+0

お返事ありがとうございます。ファイル – ricardo

0

SciPy cookbookを見てください。それはあなたにデータをインポート/エクスポートするためのいくつかの基本的な方法のアイデアを与える必要があります。

自分のPythonプログラムからファイルを保存/ロードする場合は、Pickleモジュール、またはcPickleも考慮する必要があります。

+1

のピリングが配列には不適切なパスを定義しているので疑問に思っています。あなたができる限り、地獄のように遅くなります。 np.save()を使用して.npy形式で保存するか、np.savez()を使用して、複数の配列のzip形式のアーカイブを保存します。 – dwf

1

(私は質問が古いですけど、私はこれは、同様の質問を持つ人々のためのリファレンスとしては良いかもしれないと思う)あなたが利益を持っている(ASCII /テキストファイルからデータをロードする場合

か多かれ少なかれ、人間が読めると、numpy.loadtxtはあなたが何をしたいおそらく)他のソフトウェアで解析が容易である:

あなただけ素早く負荷numpyの配列保存したい場合は/行列と行列

7

別のオプションがあるnumpy.genfromtxt、例えば:

import numpy as np 
data = np.genfromtxt("myfile.dat",delimiter=",") 

これはdataようになりますファイルは、numpy.saveとnumpy.loadを見てみましょうファイル内にある行数と列数が多いnumpy配列

1

Pythonでは、裸のpythonリストをnumpy.arrayとして保存し、ファイルに保存してから読み込んでリストに変換すると、変換トリックがかかります。

outfile.dat.npy

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'] 

Pythonのリストがnumpy.arraysなど、すべて同じものではありませんので、混乱がありますここで重要な方法は、tolist()np.array(...)の変換関数です。