6

昨日間違った質問をしたと思います。私が実際に欲しいのは、2つの2x2xN行列Aとを多重化Bすることです。

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 に答える