Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理の4章:『numpyの基本』を読み終えたのでそのメモ。
numpyとは、科学技術計算やデータ分析の為のpythonパッケージである。多次元配列を容易に作成でき、ベクトル演算と言われる高速な演算を行う事が出来る。
- 多次元配列の作り方
import numpy arr=numpy.array([[0,1,2],[3,4,5]])
ちなみに、この様に書き換える事も出来る。
import numpy arr=numpy.arange(6).reshape(2,3)
作成される配列はこんな感じ。
array([[0, 1, 2], [3, 4, 5]])
numpyから作成される多次元配列はndarrayと呼ばれる。
- ベクトル演算
ベクトル演算とは、演算命令が配列の全てに適用される事である。ベクトル演算を使用する事により、要素ごとの処理の為にループを各必要が無くなる。
配列の全ての要素に2を掛ける
import numpy arr=numpy.arange(6).reshape(2,3) arr*2
結果はこの様になる
array([[ 0, 2, 4], [ 6, 8, 10]])
ちなみに、通常の2次元配列に2を掛けると以下の様になる。
arr=[[0,1,2],[3,4,5]] arr*2
[[0, 1, 2], [3, 4, 5], [0, 1, 2], [3, 4, 5]]
ndarrayはブールインデクッス参照と言われる参照が可能である。
import numpy arr=numpy.arange(6).reshape(2,3) index=numpy.array([[True,False,True],[False,True,False]]) arr[index]
array([0, 2, 4])
ベクトル演算を活用すると以下の様に書く事も出来る。
import numpy arr=numpy.arange(6).reshape(2,3) arr[arr % 2 == 0]
array([0, 2, 4])
特定の条件時に値の置き換えを行いたい場合は、whereを使用する。
import numpy arr=numpy.arange(6).reshape(2,3) numpy.where(arr % 2,"True","False")
array([['False', 'Treu', 'False'], ['Treu', 'False', 'Treu']], dtype='|S5')
最後にランダムに1000歩進んだ場合の処理をnumpyを使用して書くと以下のとおり。for文を書かずに繰り返し処理が行えるのは便利。
import numpy nstep=1000 #0か1の配列を作成 draws=numpy.random.randint(0,2,size=nstep) #0より大きい場合は1、小さい場合は-1 step=numpy.where(draws > 0,1,-1) #累積和を算出 walk= step.cumsum()
ベクトル演算は配列を扱う上で強力な武器になると思う。numpyは他にも色々な算術演算も準備されているので活用していきたい。
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (5件) を見る