假设我有三个数组(即numpy.array
类型):
>>> w.shape
(113,)
>>> X.shape
(113,1)
>>> Y.shape
(113,)
numpy帮助页面建议在数组上每个乘法都是按元素进行的。由于以上三个向量在第一维度上的大小均为113,因此我认为在所有情况下乘法都将得出113长度的向量,但它没有:
>>> (w * Y).shape # expected
(113,)
>>> (w * X).shape # ?!?!?!?!
(113,113)
第二轴上的113是哪里来的?在我看来并不那么明智。
最佳答案
在两个数组上运算时,NumPy比较它们的形状
在元素方面。它始于尾随尺寸,
前进的道路。两个维度相等时是兼容的,或者一个
其中是1。
两个轴中较小的一个被拉伸或“复制”以匹配
另一个。
在这里应用Numpy的broadcasting规则。
w (1d array): 113
X (2d array): 113 x 1
Result (2d array): 113 x 113
关于python - numpy数组乘法问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13288294/