我在理解 Numpy 中数组广播的规则时遇到了一些麻烦。
显然,如果您对两个具有相同尺寸和形状的数组执行逐元素乘法,一切都很好。此外,如果将多维数组乘以标量,它也可以工作。这个我明白。
但是如果你有两个不同形状的 N 维数组,我不清楚广播规则到底是什么。该文档/教程解释说:为了广播,操作中两个数组的尾轴大小必须相同或其中之一必须是一个。
好的,所以我假设通过尾随轴他们指的N
是M x N
数组中的。那么,这意味着如果我尝试将两个具有相同列数的二维数组(矩阵)相乘,它应该可以工作吗?除了它不...
>>> 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
两列,我原以为这会起作用。所以,我可能在这里误解了“尾轴”一词,以及它如何应用于 N 维数组。
有人可以解释为什么我的示例不起作用,以及“尾随轴”是什么意思吗?