我在理解 Numpy 中数组广播的规则时遇到一些困难。
显然,如果对两个具有相同维度和形状的数组执行逐元素乘法,一切都很好。另外,如果将多维数组乘以标量,它就会起作用。这我明白了。
但是如果你有两个 N 维数组不同的形状,我不清楚广播规则到底是什么。这文档/教程 http://www.scipy.org/EricsBroadcastingDoc解释说:为了广播,大小拖尾轴因为一次操作中的两个数组必须具有相同的大小,或者其中之一必须为 1。
好吧,所以我假设拖尾轴他们指的是N
in a 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
and B
有两列,我本以为这会起作用。所以,我可能误解了术语“尾随轴”以及它如何应用于 N 维数组。
有人可以解释为什么我的例子不起作用,以及“尾随轴”是什么意思?