为什么不能将3×2矩阵乘以带有NumPy的2,2矩阵?

时间:2017-09-14 01:24:39

标签: numpy numpy-broadcasting

使用NumPy并尝试将矩阵相乘可能并不起作用。例如

import numpy as np

x = np.matrix('1, 2; 3, 8; 2, 9')
y = np.matrix('5, 4; 8, 2')

print(np.multiply(x, y))

可以返回

Traceback (most recent call last):
  File "vector-practice.py", line 6, in <module>
    print(np.multiply(x, y))
ValueError: operands could not be broadcast together with shapes (3,2) (2,2)

我知道我不能将这些形状相乘,但为什么不呢?我可以在纸上加倍这两个矩阵,为什么不在NumPy?我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:4)

np.multiply 按元素相乘。,它不是矩阵乘法。如果您有矩阵,则需要使用*np.dot进行矩阵乘法。

x * y
#matrix([[21,  8],
#        [79, 28],
#        [82, 26]])

np.dot(x, y)
#matrix([[21,  8],
#        [79, 28],
#        [82, 26]])