我有两个矩阵,
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 的精神,并且认为必须有更好的方法。
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]]