Python NumPy ブロードキャスティング #3
株式会社リュディアです。今回も引き続き NumPy のブロードキャスティングについてまとめてみます。
前回までの NumPy のブロードキャスティング のまとめへのリンクは以下を参考にしてください。
前回の結論としては M 行 x N 列の 2次元配列に対し 1 行 1 列つまりスカラー、M 行 1 列の2次元配列、1 行 N 列の2次元配列はブロードキャスティングにより演算可能であるということでした。少なくとも行、列のいずれかの長さが一致しているまたは長さが 1 であることが条件であることはわかりました。
では、以下のパタンはどうなると思いますか?
お互いに行も列も長さが一致していません。またそれぞれの長さは 1 ではありません。前回の条件にはあてはまりませんね。ブロードキャスティングできるのでしょうか、できないのでしょうか?できるとしたら、どのような演算になるのでしょうか?一度、考えてみてください。
結論としてはブロードキャスティング可能です。コードと実行結果を見てください。
import numpy as np
np_x = np.array([0, 3, 6, 9, 12]).reshape(5,1)
np_y = np.array([20, 30, 40])
print(np_x)
print(np_y)
print(np_x + np_y)
#
# [[ 0]
# [ 3]
# [ 6]
# [ 9]
# [12]]
#
# [20 30 40]
#
# [[20 30 40]
# [23 33 43]
# [26 36 46]
# [29 39 49]
# [32 42 52]]
#
コードの実行結果から NumPy の振る舞いは以下のようになっています。
NumPy のブロードキャスティングではいろいろなルールがあるのですが、前回のまとめ記事と今回の記事で2次元配列の演算についてはまとめきれたと思います。
では、ごきげんよう。