NumPyについてのメモ
NumPyについて、使いそうなものを備忘録としてメモしておきます。
(修士の研究時代に使っていたがほとんど忘れていた、、、)
※あくまでメモとして使う用のため、解説などは一切書いておりません。
# 配列の作成 -> 基本、引数はlistを渡すことが原則
a = np.aarray([1,2,3]) #1次元行列
b = np.array([[1,2,3],[4,5,6]]) #2次元行列(同様にn次元に拡張可能)
c = np.arange(5) #range関数の配列ver。listをrangeで作成するのと同様に考える
d = np.linspace(0,100,10) #始点0から終点100まで、10刻みの配列を作成。rangeと異なり最後の値も配列に含まれる
d = np.zeros((2,3)) #2行3列の0で埋まった行列を作成(引数はlistではなくtapple)
# 配列の情報取得
a.ndim #次元?
a.size #要素数?
a.shape #何行何列?
a.dtype #要素の型?
# 配列の変形
a.reshape(2,3) #行列を要素順に2行3列に変換。変換前の行列と要素数が一致することが条件
a.ravel() #一次元に戻す
a.T or a.transpose() #転地行列の作成。reshapeと異なり要素の順番も変化する
続いて、配列同士の計算について、、、
ある行列A,Bについて考える
四則演算(+,-,*,/,//,%)については、行列の要素ごとに働きかけるため、
A + 2 #行列Aの各要素に2を足し合わせる
A + B #行列Aと行列Bの各要素同士を足し合わせる。行列の形式が一致していることが重要
dot(a,B) #行列同士の積
A.sum() #行列の全要素の和を計算
A.min() #最小値
A.max() #最大値
A.mean() #平均値
A.std() #標準偏差
A.sum(axis=0) #行方向の和
A.sum(axis=1) #列方向の和
A.sin(),A.cos(),A.tan() #三角関数
A.arcsin(), ... #逆三角関数
A.exp() #指数関数
A.log(),A.log10() #対数関数
A.abs() #絶対値
NumPyの機能は多岐に渡るため、詳しいページに目を通したあと、使いたい操作がありかつ思い出せない場合に、都度ググれば良さそうです!
NumPyでググるだけでいくらでも一覧が出てくるので、こちらは苦労しなさそうです。
https://note.nkmk.me/numpy/
とかとてもわかり易くまとまっていますね。
配列には、リストと同様にスライス、カットなどが使用可能なことも覚えておけば、より便利に扱えそうです。
修士研究の際は、量子科学計算におけるシュレディンガー方程式を解く際によく使った覚えがあります。
当時は複数の波動関数が重ね合わさった量子式を解く際に、NumPyで一瞬で処理できることに感動を覚えたような、、、
数年経つと忘れてしまうことに衝撃を受けつつ、前回記事で書いたように、スタートラインとなるベース知識の習得に邁進します。