1

私は2つの-by-by-n配列と、例えば、k3ab

import numpy as np

a = np.array([
    [
        [1, 2, 3],
        [3, 4, 5]
    ],
    [
        [4, 2, 4],
        [1, 4, 5]
    ]
    ])
b = np.array([
    [
        [3, 1, 5],
        [0, 2, 3]
    ],
    [
        [2, 4, 5],
        [1, 2, 4]
    ]
    ])

そして、「トリプレット」のすべてのペアの内積を計算するのが好きです。つまり、

np.sum(a*b, axis=2)

それを行うためのより良い方法はおそらくeinsumですが、インデックスをまっすぐに取得できないようです。

ここにヒントはありますか?

4

1 に答える 1

3

3D最初の 2 つの軸の位置合わせを維持しながら、合計削減でこれら 2 つの入力配列の 3 番目の軸を失っています。したがって、np.einsumを使用すると、最初の 2 つの文字列が同一になり、3 番目の文字列も同一になりますが、両方の入力に対してその軸に沿って削減していることを示す出力文字列表記ではスキップされます。したがって、解決策は-

np.einsum('ijk,ijk->ij',a,b)
于 2016-07-16T17:47:39.763 に答える