numpy で行列を乗算する際に特定の問題があります。次に例を示します。
P=np.arange(30).reshape((-1,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
最初の行など、各行の 3x3 行列を取得するために、各行にその転置を掛けます。
P[0]*P[0][:,np.newaxis]
array([[0, 0, 0],
[0, 1, 2],
[0, 2, 4]])
結果を 3 次元行列 M に格納します。
M=np.zeros((10,3,3))
for i in range(10):
M[i] = P[i]*P[i][:,np.newaxis]
おそらくテンソルドットを使用して、ループせずにこれを行う方法があると思いますが、見つけることができません。
誰かがアイデアを持っていますか?