Numpy での配列ブロードキャストのルールを理解するのに苦労しています。
明らかに、同じ次元と形状の 2 つの配列に対して要素ごとの乗算を実行すると、すべて問題ありません。また、多次元配列にスカラーを掛けると機能します。これはわかります。
しかし、形状の異なる2 つの N 次元配列がある場合、放送規則が正確に何であるかは私にはわかりません。このドキュメント/チュートリアルでは、次のことを説明しています:ブロードキャストするには、操作の両方の配列の後続軸のサイズが同じであるか、いずれかが 1 である必要があります。
さて、軸N
を追跡することで、M x N
配列内のを参照していると思います。つまり、2 つの 2D 配列 (行列) を同じ数の列で乗算しようとすると、うまくいくのでしょうか? そうでないことを除いて...
>>> from numpy import *
>>> A = array([[1,2],[3,4]])
>>> B = array([[2,3],[4,6],[6,9],[8,12]])
>>> print(A)
[[1 2]
[3 4]]
>>> print(B)
[[ 2 3]
[ 4 6]
[ 6 9]
[ 8 12]]
>>>
>>> A * B
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
との両方A
にB
2 つの列があるため、これでうまくいくと思いました。したがって、「トレーリング軸」という用語と、それが N 次元配列にどのように適用されるかについて、ここで誤解していると思われます。
私の例が機能しない理由と、「後続軸」の意味を誰かが説明できますか?