将矩阵的每一行与另一个矩阵的每一行相乘

时间:2019-07-05 04:08:05

标签: numpy pytorch numpy-ndarray

在numpy / PyTorch中,我有两个矩阵,例如X=[[1,2],[3,4],[5,6]]Y=[[1,1],[2,2]]。我想在X的每一行与Y的每一行之间加点,并得到结果

[[3, 6],[7, 14], [11,22]]

我该如何实现?,谢谢!

3 个答案:

答案 0 :(得分:4)

我认为这就是您想要的:

import numpy as np

x= [[1,2],[3,4],[5,6]] 
y= [[1,1],[2,2]]

x = np.asarray(x) #convert list to numpy array 
y = np.asarray(y) #convert list to numpy array

product = np.dot(x, y.T)

.T转置矩阵,在这种情况下,这对于乘法是必需的(因为点积是defined的方式)。 print(product)将输出:

[[ 3  6]
 [ 7 14]
 [11 22]]

答案 1 :(得分:1)

使用einsum

np.einsum('ij,kj->ik', X, Y)

array([[ 3,  6],
       [ 7, 14],
       [11, 22]])

答案 2 :(得分:1)

PyTorch中,您可以使用torch.mm(a, b)torch.matmul(a, b)来实现,如下所示:

x = np.array([[1,2],[3,4],[5,6]])
y = np.array([[1,1],[2,2]])
x = torch.from_numpy(x)
y = torch.from_numpy(y)
# print(torch.matmul(x, torch.t(y)))
print(torch.mm(x, torch.t(y)))

输出:

tensor([[ 3,  6],
        [ 7, 14],
        [11, 22]], dtype=torch.int32)