2016-10-18 5 views
1

でnumpyのアレイを和Iはベクトルの値を追加する所定の指標

c = np.array([10, 10, 10], dtype='d') 

同一の別のアレイ(によって所定の位置に値0 <= b[i] < len(c)

b = np.array([2, 0, 1, 0, 2, 0, 1, 1, 0, 2], dtype='int32') 

これは擬似コードで書くことが非常に簡単であるとaの大きさ、 :

for I in range(b.shape[0]): 
    J = b[I] 
    c[J] += a[I] 

このような何かが、ベクトル化(cの長さは、実際のケースでは数百です)。

c[0] += np.sum(a[b==0]) # 27 (10 + 1 + 3 + 5 + 8) 
c[1] += np.sum(a[b==1]) # 25 (10 + 2 + 6 + 7) 
c[2] += np.sum(a[b==2]) # 23 (10 + 0 + 4 + 9) 

私の最初の推測されました:

c[b] += a 

が、aの唯一の最後の値が加算されます。

答えて

2

あなたはそうのように、IDベースの加重和を取得し、cに追加するnp.bincountを使用することができます - 答えを

np.bincount(b,a) + c 
+0

感謝を! –

関連する問題