numpy数组乘法问题

时间:2012-11-08 11:34:59

标签: python arrays numpy

假设我有三个数组(即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来自哪里?对我来说看起来不是那么有道理。

2 个答案:

答案 0 :(得分:3)

  

在两个阵列上操作时,NumPy会比较它们的形状   逐元素。它从尾随尺寸开始,并起作用   前进的方向。当两个维度相等或一个维度兼容时,它们是兼容的   他们是1.

两个轴中较小的一个被拉伸或“复制”以匹配 另一个。

此处正在应用Numpy的 broadcasting 规则。

w      (1d array):       113
X      (2d array): 113 x   1   
Result (2d array): 113 x 113

答案 1 :(得分:0)

查看正在发生的事情的最简单方法是使用示例:

w = array([5,6])
x = array([[1,2],[3,4]])
z = array([[5,6]])

w*x
# array([[ 5, 12],
#        [15, 24]])

w*z
# array([[25, 36]])