2014年3月14日金曜日

numpyで実験データを読み込むとき

numpyのgenfromtxt()を使ってデータを読み込むときのメモ。

次のようなデータがあるとする。

text = """
1 excellent 13.5 4
2 poor 2.385 3
3 good 11.58 6
"""

以下のようにしてデータを読み込む.
dtpyeでは(name, dtype)を指定する。dtypeのiやfはintやfloat。そのとなりの数字はバイト数を表す。
data = np.genfromtxt(StringIO(text), dtype=[('num', 'i8'), ('rating', 'S4'), ('voltage', 'f8'), ('rank', 'i8')], delimiter=' ')


出力は以下のようになる。
array([(1, 'exce', 13.5, 4), (2, 'poor', 2.385, 3), (3, 'good', 11.58, 6)], 
      dtype=[('num', '<i8'), ('rating', 'S4'), ('voltage', '<f8'), ('rank', '<i8')])



名前をつけておけば取り出すときに
>>> data['rating'] 
array(['exce', 'poor', 'good'], dtype='|S4')


<や|はバイトオーダーと呼ばれるものらしい。Wikipediaも参考になった。