2011-09-15 9 views
3

Increment Numpy array with repeated indicesの多次元の場合に興味があります。繰返しインデックスを持つヌンディ・マルチd配列のインクリメント

私は、N次元の配列とN個のインデックス配列を持っています。インデックス配列に繰り返しエントリがある可能性があります。

繰り返さなければ、解決策は、リピートを有する

a = arange(24).reshape(2,3,4) 
i = array([0,0,1]) 
j = array([0,1,1]) 
k = array([0,0,3]) 
a[i,j,k] += 1 

、(例。j=array([0,0,2]))ですが、私は反復をインクリメントnumpyの作ることができないんです。

答えて

3

どのようにこのことについて:私は立方ビンでこれを使用してい

import numpy as np 
a = np.zeros((2,3,4)) 
i = np.array([0,0,1]) 
j = np.array([0,0,1]) 
k = np.array([0,0,3]) 

ijk = np.vstack((i,j,k)).T 
H,edge = np.histogramdd(ijk,bins=a.shape) 
a += H 
+0

とi、j、kに対して同じサイズのキューブを平坦化します。なぜそれが27x27x27よりも大きい配列を分解し始めるのか? – ajwood

0

直接配列のインデックスと簡単に解決策があるかどうかはわからないが、これは動作します:

for x,y,z in zip(i,j,k): 
    a[x,y,z] +=1 
関連する問題