ブロードキャストを活用して1次元のndarrayと2次元以上のndarrayの演算する際の注意点
ブロードキャストとは、pythonの機能で行数、列数が異なる配列同士を上手に補完して演算してくれるものである。
例えば、以下の様なarrayを用意する。
a,bは行数は同じだが列数が異なる。
こう行った際にa-bを行うと、以下の様な結果が得られる。
この様に本来(5,1)のサイズであるbが、あたかも(5,5)の様に振舞って四則演算をしてくれる機能こそがブロードキャスト。
初心者の自分が引っかかったのが以下の様なケース。
cは一見bと同じに見えるが、それぞれサイズが異なりb(5,1), c(5,)である。
このままa-cを実行するとブロードキャストは適用されずエラーを返される。
aとbは2次元配列なのに対して、cは1次元配列の為ブロードキャストが適用されない。
次元の違いは以下の様に確認できる。
a-cを計算したい時には、以下の様にcをreshapeし2次元配列にしてやれば良い。
なお、上の例では演算時のみreshapeをしており元のcには変更が加わっていない事が分かる。