6

次の方法で操作しようとしている 3 次元データ セットがあります。

data.shape = (643, 2890, 10)
vector.shape = (643,)

numpy でデータを長さ 643 の 2890x10 行列の 1-D 配列として表示し、データとベクトルの間の内積 (和積?) を計算したいと思います。ループでこれを行うことができますが、プリミティブを使用してこれを行う方法を見つけたいと思っています (これは並列ノード間で何度も実行されます)。

同等のループ(私は信じています):

a = numpy.zeros ((2890, 10))
for i in range (643):
   a += vector[i]*data[i]

どうもありがとう!これが再投稿である場合は申し訳ありませんが、私は広範囲に検索し、皆さんに尋ねるためにアカウントを作成しました.

   a = numpy.array ([[[1,1,1,1],[2,2,2,2],[3,3,3,3]], [[3,3,3,3],[4,4,4,4],[5,5,5,5]]])
   b = numpy.array ([10,20])
# Thus, 
   a.shape = (2,3,4)
   b.shape = (2,)
# Want an operation . such that:
   a . b = [[10,10,10,10],[20,20,20,20],[30,30,30,30]] + [[60,60,60,60],[80,80,80,80],[100,100,100,100]]
         = [[70,70,70,70],[100,100,100,100],[130,130,130,130]]
4

2 に答える 2

0

前の回答では正しい numpy 関数を使用していますが、求められた結果は得られません。

そのはず:

np.einsum('i, ijk -> ijk', vector, data)
于 2019-12-17T09:46:36.343 に答える