numpyの行列演算を見つけようとしていますが、次のループコードと同じ結果が得られます。私はそれがはるかに速くなると信じていますが、私はそれを行うためのいくつかのpythonのスキルが欠けている。2つの配列の対応するリストの外積の合計 - NumPy
これは行単位で動作し、xの行の各値にeの同じ行の各値が乗算されて合計されます。
結果の最初の項目は(2 * 0 + 2 * 1 + 2 * 4 + 2 * 2 + 2 * 3)+(0 * 0 + ...)+ ... + 0 + 1 * 1 + 1 * 4 + 1 * 2 + 1 * 3)= 30
e = np.array([[0,1,4,2,3],[2,0,2,3,0,1]])
x = np.array([[2,0,0,0,1],[0,3,0,0,4,0]])
result = np.zeros(len(x))
for key, j in enumerate(x):
for jj in j:
for i in e[key]:
result[key] += jj*i
>>> result
Out[1]: array([ 30., 56.])
ありがとうございました。リストにゼロを追加して長さを同じにするとどうなりますか? Dakota Dutkoが示唆したように、私のループの結果は変わらず、おそらく私はドットプロダクトを使うことができますか? – Daerken
@Daerken通常の形状の配列の使い方に関する記事を編集しました。見てみな。 – Divakar
ニース:)ありがとう! – Daerken