Numpy dot一个矩阵,带有一个向量数组,并获得一个新的向量数组

时间:2018-03-11 10:50:08

标签: python numpy

假设我们有一组2D矢量(描述方形)和矩阵(沿y轴缩放):

vecs = np.array([[1, 0],
                 [1, 1],
                 [0, 1],
                 [0, 0]])
mat = np.array([[1, 0],
                [0, 2]])

我想获得一个新的向量数组,其中vecs的每个向量都是点乘mat。现在我这样做:

new_vecs = vecs.copy()
for i, vec in enumerate(vecs):
    new_vecs[i] = np.dot(mat, vec)

这会产生所需的结果:

>>> print(new_vecs)
[[1 0]
 [1 2]
 [0 2]
 [0 0]]

有什么更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

点积np.dot将使任何形状的矩阵相互叠加,只要它们的形状对齐:np.dot((a,b), (b,c)) -> (a,c)。因此,如果你颠倒了订单,Numpy会在一次通话中为你做这件事:

In [3]: np.dot(vecs, mat)
Out[3]:
array([[1, 0],
       [1, 2],
       [0, 2],
       [0, 0]])