numpy
numpyのファイルIO
サーチ…
バイナリファイルを使用したnumpy配列の保存とロード
x = np.random.random([100,100])
x.tofile('/path/to/dir/saved_binary.npy')
y = fromfile('/path/to/dir/saved_binary.npy')
z = y.reshape(100,100)
all(x==z)
# Output:
# True
一貫した構造のテキストファイルから数値データを読み込む
関数np.loadtxt
は、CSV形式のファイルを読み取るために使用できます。
# File:
# # Col_1 Col_2
# 1, 1
# 2, 4
# 3, 9
np.loadtxt('/path/to/dir/csvlike.txt', delimiter=',', comments='#')
# Output:
# array([[ 1., 1.],
# [ 2., 4.],
# [ 3., 9.]])
np.fromregex
正規表現を使って同じファイルを読むことができます:
np.fromregex('/path/to/dir/csvlike.txt', r'(\d+),\s(\d+)', np.int64)
# Output:
# array([[1, 1],
# [2, 4],
# [3, 9]])
データをCSV形式のASCIIファイルとして保存する
アナログnp.loadtxt
、 np.savetxt
を使用してデータをASCIIファイルに保存できます
import numpy as np
x = np.random.random([100,100])
np.savetxt("filename.txt", x)
フォーマットを制御するには:
np.savetxt("filename.txt", x, delimiter=", " ,
newline="\n", comments="$ ", fmt="%1.2f",
header="commented example text")
出力:
$ commented example text
0.30, 0.61, 0.34, 0.13, 0.52, 0.62, 0.35, 0.87, 0.48, [...]
CSVファイルを読む
利用可能な3つの主な機能(マニュアルページの説明):
fromfile
- 既知のデータ型を持つバイナリデータを読み込み、単純に書式設定されたテキストファイルを解析する非常に効率的な方法。この関数を使用すると、tofileメソッドを使用して書き込まれたデータを読み取ることができます。
genfromtxt
- テキストファイルからデータをロードします。欠損値は指定どおりに処理されます。最初のskip_header行以降の各行は区切り文字で分割され、コメント文字に続く文字は破棄されます。
loadtxt
- テキストファイルからデータを読み込みます。テキストファイルの各行は、同じ数の値を持つ必要があります。
genfromtxt
のためのラッパー関数であるloadtxt
。 genfromtxt
は、入力ファイルを処理するための多くのパラメータを持っているため、最も単純です。
入力ファイルmyfile.csv
に次の内容をmyfile.csv
します。
#descriptive text line to skip
1.0, 2, 3
4, 5.5, 6
import numpy as np
np.genfromtxt('path/to/myfile.csv',delimiter=',',skiprows=1)
配列を与える:
array([[ 1. , 2. , 3. ],
[ 4. , 5.5, 6. ]])
1 2.0000 buckle_my_shoe
3 4.0000 margery_door
import numpy as np
np.genfromtxt('filename', dtype= None)
array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')],
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])
dtype=None
使用すると、再配列が行われます。
列数の不一致:
ファイル:1 2 3 4 5 6 7 8 9 10 11 22 13 14 15 16 17 18 19 20 21 22 23 24
result=np.fromfile(path_to_file,dtype=float,sep="\t",count=-1)
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow