PythonのNumPyでタブ区切りのtsvファイルを読み込み/書き込みする方法
numpy.loadtxt()でdelimiter = "\t"を指定して読み込む
numpy.loadtxt()でdelimiter = "\t"を指定することで、タブ区切りのtsvファイルを読み込むことができます。
npArray = np.loadtxt("in.txt", delimiter = "\t", dtype = int)
numpy.loadtxt()のusecolsに読み込む列を指定
numpy.loadtxt()のusecolsに読み込む列を指定することができます。
例えば、1列目と3列目を読み込む場合には、下記のように書きます。
npArray = np.loadtxt("in.txt", delimiter = "\t", dtype = int, usecols = (1, 3))
numpy.savetxt()でtsv形式でファイルに書き込む
下記のように、numpy.savetxt()でdelimiter = "\t"を指定してファイルに書き込みます。
np.savetxt("out.txt", npArray, delimiter = "\t", fmt = "%d")
サンプルコード
例えば、下記のin.txtがあったとします。
$ cat in.txt 10 21 32 43 14 25 36 47 18 29 30 41
下記がサンプルコードになります。
$ cat sample.py
#!/usr/bin/env python3
# coding: UTF-8
import numpy as np
npArray = np.loadtxt("in.txt", delimiter = "\t", dtype = int)
print (npArray)
print("1行目と3行目を読み込む")
npArray = np.loadtxt("in.txt", delimiter = "\t", dtype = int, usecols = (1, 3))
print (npArray)
print("配列dataをtsv形式でout.txtに出力")
np.savetxt("out.txt", npArray, delimiter = "\t", fmt = "%d")
下記が実行結果になります。
$ ./sample.py [[10 21 32 43] [14 25 36 47] [18 29 30 41]] 1行目と3行目を読み込む [[21 43] [25 47] [29 41]] 配列dataをtsv形式でout.txtに出力 $ cat out.txt 21 43 25 47 29 41
