在numpy / PyTorch中,我有两个矩阵,例如X=[[1,2],[3,4],[5,6]]
,Y=[[1,1],[2,2]]
。我想在X的每一行与Y的每一行之间加点,并得到结果
[[3, 6],[7, 14], [11,22]]
我该如何实现?,谢谢!
答案 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)