7,348 views
この記事は最終更新から 1880日 が経過しています。
3行6列のデータ配列を持つ CSVファイル を用意した。
[user@linux]$ cat test.csv 10,11,12,13,14,15 20,21,22,23,24,25 30,31,32,33,34,35
方法1:numpyの関数を使用する。
このファイルを numpy.loadtxt でリードしてみる。
>>> import numpy as np
>>> a = np.loadtxt('test.csv', delimiter=',')
>>> a
array([[ 10., 11., 12., 13., 14., 15.],
[ 20., 21., 22., 23., 24., 25.],
[ 30., 31., 32., 33., 34., 35.]])
全要素の値を2倍した後、その配列を numpy.savetxt で CSVファイルとしてセーブしてみる。
>>> b = a * 2
>>> b
array([[ 20., 22., 24., 26., 28., 30.],
[ 40., 42., 44., 46., 48., 50.],
[ 60., 62., 64., 66., 68., 70.]])
>>> np.savetxt('out.csv', b, delimiter=',', fmt='%d')
正しく出力できている!
[user@linux]$ cat out.csv 20,22,24,26,28,30 40,42,44,46,48,50 60,62,64,66,68,70
方法2:CSVパッケージを使用する。
numpyを使わず、csvパッケージを使う方法もある。
Read
>>> import csv >>> with open('test.csv', newline='') as fh: ... spamreader = csv.reader(fh, delimiter=',') ... for row in spamreader: ... a.append(row) ... >>> a [['10', '11', '12', '13', '14', '15'], ['20', '21', '22', '23', '24', '25'], ['30', '31', '32', '33', '34', '35']] >>>
Write
>>> with open('out2.csv', "w") as fh: ... writer = csv.writer(fh, lineterminator="\n") ... writer.writerows(a) ... >>> [user@linux]$ cat out2.csv 10,11,12,13,14,15 20,21,22,23,24,25 30,31,32,33,34,35 [user@linux]$