numpy乘法:不能广播
这可能是一个非常愚蠢的问题,但我已经被困了45分钟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
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)