我有一些麻烦了解为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维数组。
有人可以解释为什么我的例子不工作,什么是“尾轴”是什么意思?