1

次の形状でテンソルの要素ごとの乗算を行うにはどうすればよいですか? ここでの 2 番目の配列は、常に 2D であると見なされます。

[x, y, ?, ?, ?, ...] * [x, y]

? とマークされたすべての次元でブロードキャストしたいのですが、その数はアプリオリにはわかりません。私が検討した可能な解決策(しかし、方法がわからない):

  • 可変数の軸を 2 番目の配列に追加します
  • 両方の配列の軸の順序を逆にしてから、もう一度逆にします

どんな指針も素晴らしいでしょう。

4

3 に答える 3

4

質問で言及されている代替手段(b2D配列を使用):

  • 可変数の軸を 2 番目の配列に追加します

    a * b.reshape(b.shape + (1,)*(a.ndim-b.ndim))
    
  • 両方の配列の軸の順序を逆にしてから、もう一度逆にします

    (a.T * b.T).T
    

einsum を使用した別の方法:

numpy.einsum('ij...,ij->ij...', a, b)
于 2015-11-19T13:26:43.637 に答える