如何在numpy中对两个矩阵的每一列进行矩阵乘法?

问题描述 投票:0回答:1

我有两个矩阵,

A = np.array([[1, 3, 5],
             [2, 4, 6]])
b = np.array([[7, 9, 11],
             [8, 10, 12]])
 

我要执行的运算是乘法

np.matmul([[1],[2]], [[7, 8]])
# [1]
# [2] * [7, 8] = [7, 8]
#                 [14, 16]

对于每一列,对所得矩阵求和。我的矩阵的形状始终为 (2, N)。换句话说,将矩阵 A 的第 i 列与矩阵 B 的第 i 列的转置相乘,然后对每个列对中的每个 2x2 矩阵求和。

我知道我可能可以循环每个条目并以这种方式计算它,但我不认为这就是 numpy 的精神,并且认为必须有更好的方法。

python numpy matrix numpy-ndarray matrix-multiplication
1个回答
0
投票

IIUC 你可以用

np.einsum
来做到这一点:

A = np.array([[1, 3, 5], [2, 4, 6]])
B = np.array([[7, 9, 11], [8, 10, 12]])

out = np.einsum("ij,kj->ik", A, B)
print(out)

打印:

[[ 89  98]
 [116 128]]
© www.soinside.com 2019 - 2024. All rights reserved.