Python NumPy ブロードキャスティング #3

株式会社リュディアです。今回も引き続き NumPy のブロードキャスティングについてまとめてみます。

前回までの NumPy のブロードキャスティング のまとめへのリンクは以下を参考にしてください。

前回の結論としては M 行 x N 列の 2次元配列に対し 1 行 1 列つまりスカラーM 行 1 列の2次元配列1 行 N 列の2次元配列はブロードキャスティングにより演算可能であるということでした。少なくとも行、列のいずれかの長さが一致しているまたは長さが 1 であることが条件であることはわかりました。

では、以下のパタンはどうなると思いますか?

画像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 の振る舞いは以下のようになっています。

画像2

NumPy のブロードキャスティングではいろいろなルールがあるのですが、前回のまとめ記事と今回の記事で2次元配列の演算についてはまとめきれたと思います。

では、ごきげんよう。


この記事が気に入ったらサポートをしてみませんか?