次のような np.arrays のリストがあります。
l = [array([0.2,0.3,0.5]),array([0.7,0.3])]
外積を取得するために必要なもの:
array([[0.14, 0.06],
[0.21, 0.09],
[0.35, 0.15]])
一般的な方法:
array([[l[0][0] * l[1][0], l[0][0] * l[1][1]],
[l[0][1] * l[1][0], l[0][1] * l[1][1]],
[l[0][2] * l[1][0], l[0][2] * l[1][1]]])
しかし、任意の長さの l (>= 2) の場合、len(l) == 4 の場合、4 次元配列が得られます。
私の現在のアプローチは、for ループで tensordot を使用することです。
product = np.tensordot(l[0], l[1], 0)
for i in range(2, len(l)):
product = np.tensordot(product, l[i], 0)
しかし、私はPythonコードの方が見栄えが良いことに慣れています。より優れた、より高速なソリューションを実行する方法を考えている人はいますか?
動機は、要素ごとに乗算された 2 つの配列の合計を取得する必要があることです。
result = np.sum(arr * product)
どこで arr.shape == product.shape. 賢い人たちなら、それを改善できるかもしれません。