jef*_*ind 5 python numpy matrix-multiplication
在矩阵乘法中,假设它A
是一个3 x 2矩阵(3行,2列)并且B
是2 x 4矩阵(2行,4列),那么如果是矩阵C = A * B
,那么C
应该有3行4列.numpy为什么不做这个乘法?当我尝试以下代码时,我收到一个错误:ValueError: operands could not be broadcast together with shapes (3,2) (2,4)
a = np.ones((3,2))
b = np.ones((2,4))
print a*b
Run Code Online (Sandbox Code Playgroud)
我尝试转置A和B,alwasy得到相同的答案.为什么?在这种情况下如何进行矩阵乘法?
Dan*_*iel 17
*
numpy数组的运算符是元素乘法(类似于相同维度的数组的Hadamard乘积),而不是矩阵乘法.
例如:
>>> a
array([[0],
[1],
[2]])
>>> b
array([0, 1, 2])
>>> a*b
array([[0, 0, 0],
[0, 1, 2],
[0, 2, 4]])
Run Code Online (Sandbox Code Playgroud)
对于矩阵乘以numpy数组:
>>> a = np.ones((3,2))
>>> b = np.ones((2,4))
>>> np.dot(a,b)
array([[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.]])
Run Code Online (Sandbox Code Playgroud)
另外你可以使用矩阵类:
>>> a=np.matrix(np.ones((3,2)))
>>> b=np.matrix(np.ones((2,4)))
>>> a*b
matrix([[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.],
[ 2., 2., 2., 2.]])
Run Code Online (Sandbox Code Playgroud)
有关广播numpy数组的更多信息可以在这里找到,有关矩阵类的更多信息可以在这里找到.
归档时间: |
|
查看次数: |
8702 次 |
最近记录: |