6

我想我昨天问错了问题。我真正想要的是将两个2x2xN矩阵相乘AB这样

C[:,:,i] = dot(A[:,:,i], B[:,:,i])

例如,如果我有一个矩阵

A = np.arange(12).reshape(2, 2, 3)

我怎样才能得到C = A x A上述定义?是否有内置功能可以做到这一点?


另外,如果我乘以A (shape 2x2xN)B (shape 2x2x1, instead of N)我想得到

C[:,:,i] = dot(A[:,:,i], B[:,:,1])
4

1 回答 1

4

尝试使用numpy.einsum,它有一点学习曲线,但它应该给你你想要的。这是一个帮助您入门的示例。

import numpy as np

A = np.random.random((2, 2, 3))
B = np.random.random((2, 2, 3))

C1 = np.empty((2, 2, 3))
for i in range(3):
    C1[:, :, i] = np.dot(A[:, :, i], B[:, :, i])

C2 = np.einsum('ijn,jkn->ikn', A, B)
np.allclose(C1, C2)
于 2013-03-20T22:37:45.587 回答