numpy乘法:不能播出

时间:2014-09-29 04:15:29

标签: numpy

这可能是一个非常愚蠢的问题,但我被困了45分钟

np.multiply(np.transpose(phi), phi)

phi是一个矩阵,我得到了:

operands could not be broadcast together with shapes (4,10) (10,4) 

我的意思是,不是矩阵乘法对形状(n,m)(m,p)?

有效

2 个答案:

答案 0 :(得分:2)

np.multiply元素明确的乘法。使用函数np.dotdot方法进行矩阵乘法。如果phinp.matrix个实例,您还可以使用二元运算符*,例如phi.T * phi

例如,a是一个numpy数组(但不是np.matrix的实例):

In [7]: a = np.array([[1, 2], [3, 4], [5, 6]])

In [8]: a.T.dot(a)
Out[8]: 
array([[35, 44],
       [44, 56]])

np.matrix创建a个实例:

In [9]: m = np.matrix(a)

In [10]: m
Out[10]: 
matrix([[1, 2],
        [3, 4],
        [5, 6]])

In [11]: m.T.dot(m)
Out[11]: 
matrix([[35, 44],
        [44, 56]])

In [12]: m.T * m
Out[12]: 
matrix([[35, 44],
        [44, 56]])

答案 1 :(得分:0)

这可以按照您的预期运作:

np.dot(phi.T,phi)

正如@Warren Weckesser所解释的那样,np.muliply(或*运算符)对numpy 数组执行元素操作。

*运算符为numpy 矩阵执行矩阵多重

有关numpy数组和矩阵之间的区别,请参阅this有用的文章。它建议您使用数组。