假设我有三个数组(即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/

10-09 07:29