文字列変数を使用したCSVテキストのリスト化 †
以下に文字列変数上の各項目をリストに展開するサンプルコードを記します。
splitメソッドを使えば簡単にリストに展開することができます。
構文
文字列.split("区切り文字")
サンプルコード
s = "foo,bar,hoge" l = s.split(",") print l
実行結果
['foo', 'bar', 'hoge']
実行結果を見ると、splitで指定したカンマで分割されリスト(配列)に展開されているのが確認できます。
CSVファイルから1行ずつ取り出す †
CSVファイルをオープンし一行ずつ読み込みリスト(配列)に展開するスクリプトです。
使用したCSVファイルは以下の通りです。
$ cat data.csv abc,def,ghi,jkl,mno,pqr,stu,vwx,yz ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX,YZ
サンプルコード
#!/usr/bin/env python f = open('data.csv', 'r') for line in f: line = line.rstrip() l = line.split(",") print l f.close()
実行結果
sakura@ubuntu:~/python$ chmod +x csv2lst.py sakura@ubuntu:~/python$ ./csv2lst.py ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz'] ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR', 'STU', 'VWX', 'YZ']
上記のサンプルコードでrstripを使用しています。
これは、行末の改行コードを削除しています。
以上、CSV形式のテキスト(ファイル)をリスト(配列)に展開する方法でした。
ベクトル
import numpy as np
a = np.array([1, 1, 2, 3, 5, 8, 13])
b = np.array([1, 4, 9, 16, 25, 36, 49])
a + b
## array([ 2, 5, 11, 19, 30, 44, 62])
a[0] + b[2]
## 10
ベクトルの長さやデータの型などを調べる際に以下のようにする。
a
## array([ 1, 1, 2, 3, 5, 8, 13])
a.size
## 7
a.dtype
## dtype('int64')
ベクトルの結合は NumPy の append
メソッドを利用する。
c = np.append(a, b)
c
## array([ 1, 1, 2, 3, 5, 8, 13, 1, 4, 9, 16, 25, 36, 49])
平均値などの基礎統計量を計算するメソッドなど。
a.mean() # np.mean(a)
## 4.7142857142857144
a.var() # np.var(a)
## 16.77551020408163
a.sum() # np.sum(a)
## 33
a.min() # np.min(a)
## 1
a.max() # np.max(a)
## 13
2 つのベクトルを縦にまたは横に結合して 2 次元配列に変換するには NumPy の column_stack
または row_stack
を利用する。
d = np.column_stack((a, b))
d
## array([[ 1, 1],
## [ 1, 4],
## [ 2, 9],
## [ 3, 16],
## [ 5, 25],
## [ 8, 36],
## [13, 49]])
## d[4,0]
## 5
e = np.row_stack((a, b))
e
## array([[ 1, 1, 2, 3, 5, 8, 13],
## [ 1, 4, 9, 16, 25, 36, 49]])
e[1, 5]
## 36
その他のベクトルの作り方など。
x = np.array([1, 2, 3, 4])
x.repeat(3)
## array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4])
x.repeat(x)
## array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
np.zeros(5)
## array([ 0., 0., 0., 0., 0.])
np.arange(1,5)
## array([1, 2, 3, 4])
np.arange(1, 10, 3)
## array([1, 4, 7])
np.arange(10, 1, -1)
## array([10, 9, 8, 7, 6, 5, 4, 3, 2])
ベクトルの並べ替えなど。sort
はベクトル要素を並べ変えるのに対して、argsort
はベクトル要素を並べ替えるためのインデックスを求めている。
y = np.array([1, 43, 23, 32, 55, 11])
y[::-1]
## array([11, 55, 32, 23, 43, 1])
np.sort(y)
## array([ 1, 11, 23, 32, 43, 55])
np.argsort(y)
## array([0, 1, 2, 3, 4, 5])
y[np.argsort(y)]
## array([ 1, 11, 23, 32, 43, 55])