こんな感じのテキストデータがあって、これを読み込む
1 21 2 22 3 23 4 24 5 25
2列目のみ解析に使う、2列目のみ使うので1列目は捨てる
import numpy as np fname="hoge.txt" a = (np.loadtxt(fname, unpack=True))[1]
unpackのオプションがなんで必要かはいかの記事を参照
■ 過去記事 : Python を用いて実験データを読み込み、可視化する
これで1つのテキストファイルをndarrayに収納はできた
あとは、複数のファイルを読み込んで1つにまとめる
import numpy as np for i in range(100): fname="hoge%d.txt" % (i) a = (np.loadtxt(fname, unpack=True))[1] if i == 0: b = a else: b = np.hstack((b, a))
これでbにすべての結果が入る
listにしといて、appendを使ったほうが早いのかもしれんけど、とりあえず動いたので良し
(追記)
このhstackで2つのarrayを結合している
https://deepage.net/features/numpy-stack.html#基本的な結合の仕方
(追記)
上の例だと、ファイルの通し番号順に上からarrayを作ってくれない
1つ目に開いたファイルの中身がarrayの一番最初に来て欲しい時は・・・
1 2
3 4
5 6
みたいな2列のデータを読み込みたい
for i in range(7, 21): fname = "hoge%d.txt" % i # ファイルサイズが0以上かチェック if os.path.getsize(fname) > 0: aa, bb = np.loadtxt(fname, unpack=True) if i == 7: a = aa b = bb else: a = np.hstack((a, aa)) b = np.hstack((b, bb)) else: print("error at %s" % fname)
(追記)
ある任意の列だけ読み込みたいときは、
np.loadtxt(fname, dtype=str, unpack=Truc, usecols=[0, 2, 3])
のように書く
これで、0, 2, 3列目のみ取り出せる
loadtxtでテキストファイルを読み込むときは、すべての列数が同じことが必要みたいで
通常は5個しか要素がないのに、ある行だけ6個要素があるとエラーになる
必要な列だけ書いて読み込むことで、そのエラーを回避することができる
ランキング参加中です
↓クリックしていただけると嬉しいです〜