numpy
歴史ある数値計算ライブラリ。
以外とこれだけでできることも多い。
np.cumsum(累積和)
np.flip(反転)
W.I.P.
ブロードキャスト
numpyのブロードキャストについてまとめ
AとBの演算したい場合に、shapeの長さが同じだと、1の部分の次元の要素を複製して演算できる。
shape=(4,3,2)とshape=(1,3,2)の演算はOK(左側に1があってもOK)
shape=(4,3,2)とshape=(4,3,1)の演算はOK(左側に1があってもOK)
shape=(5,4,3,2)とshape=(5,4,1,1)の演算はOK(1が複数あってもOK)
shape=(5,4,3,2)とshape=(1,4,1,1)の演算はOK(1が飛んでてもOK)
shape=(5,1,3,2)とshape=(5,4,1,2)の演算はOK(お互い違う場合でもOK)
また、shapeの長さが異なる場合でも、親側(左側)には1を自動追加することができる。
shape=(5,4,3,2)とshape=(4,3,2)の演算はOK(shape=(4,3,2)は勝手に(1,4,3,2)と解釈)
shape=(5,4,3,2)とshape=(3,2)の演算はOK(shape=(3,2)は勝手に(1,1,4,3,2)と解釈)
ちなみに、子側(右側)には1を自動追加できない。理由は両方に自動追加できると、複数の選択肢が発生するためと思われる。
shape=(5,4,3,2)とshape=(5,4)の演算はNG
やりたいときは、足りない側を明示的にreshapeしてあげる必要がある。
参考
https://snowtree-injune.com/2020/06/14/broadcast-z007/
np.where
Aの次元が2(shapeが2要素)の場合、戻りは各行列のindexとなる。
次元が1(shapeが1要素)の場合も結果は、index_tuple[0]として取り出す必要がある。
Numpyでrolling処理する
Last updated