如何使用numpy获得两个矩阵的点积?

时间:2018-04-30 07:56:04

标签: python numpy matrix vector

我正在尝试使用numpy获取向量和矩阵的点积,但我得到以下异常:ValueError: shapes (2,1) and (2,2) not aligned: 1 (dim 1) != 2 (dim 0)

基本上我只想将2x1矩阵(2行向量)与2x2矩阵相乘,但numpy似乎不支持这一点。我已经尝试过使用1x2矩阵做同样的事情,但这有效,但没有给我我想要的结果。

我使用的代码是:

inputs = np.matrix([[1], [0]])
weights = np.matrix([[1, 2], [3, 4]])
print(np.add(np.dot(inputs, weights), 0))

#desired result = array([1, 3])

所以我的问题是:如何用numpy执行我想要的操作?

修改

这就是:

>>> import numpy as np
>>> a = np.matrix([[1], [0]])
>>> b = np.matrix([[1, 2], [3, 4]])
>>> a * b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist- 
packages/numpy/matrixlib/defmatrix.py", line 309, in __mul__
    return N.dot(self, asmatrix(other))
ValueError: shapes (2,1) and (2,2) not aligned: 1 (dim 1) != 2 (dim 0)

1 个答案:

答案 0 :(得分:1)

Dot产品适用于相同尺寸的载体。你可以在numpy中乘以矩阵。如果您需要不同的解决方案 - 请在问题和所需结果中包含您的代码。

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

>>> a * b
array([[ 8, 15],
    [12, 21]])

更新每个更新的问题:

inputs = np.matrix([[1], [0]])
weights = np.matrix([[1, 2], [3, 4]])
>>> weights * inputs
matrix([[1],
        [3]])