numpy乘法:不能广播

numpy乘法:不能广播,numpy,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)有效吗?是元素乘法。使用函数np.dot或dot方法进行矩阵乘法。如果phi是一个实例,您也可以使用二进制运算符*,例如phi.T*phi 例如,a是一个nu

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

np.multiply(np.transpose(phi), phi)
phi是一个矩阵,我得到:

operands could not be broadcast together with shapes (4,10) (10,4) 
我的意思是,矩阵乘法不是对形状(n,m)(m,p)有效吗?

是元素乘法。使用函数
np.dot
dot
方法进行矩阵乘法。如果
phi
是一个实例,您也可以使用二进制运算符
*
,例如
phi.T*phi

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

a
创建
np.matrix
实例:

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]])

这与您预期的一样有效:

np.dot(phi.T,phi)
正如@Warren Weckesser所解释的,
np.muliply
(或
*
操作符)对numpy数组执行元素操作

*
运算符对numpy矩阵执行矩阵多重应用程序


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

*
如果
phi
np.matrix
的一个实例,则可以使用数组。我添加了一些示例代码:请注意,
a
(使用
np.array()
创建)是一个
np.ndarray
实例,
m
是一个
np.matrix
实例。
np.dot(phi.T,phi)