2013-03-20 62 views
0

給定一個整數數組I0 <= I[j] < 1000,帶有非唯一整數值​​I[j]和「價值」陣列VV.shape == (1000,),我怎麼能創建一個數組RR.shape == I.shape這樣R[j] == V[I[j]]如果I[j]IR[j] == np.nan中是唯一的,如果在I中出現I[j]的值不止一次?獲得的非唯一物品指數在一個數組

EDIT 作爲一個例子,給出I = np.array([1, 2, 1, 3, 2], dtype=int),結果應該是V = array([nan, nan, nan, V[3], nan]),作爲3I唯一獨特元件。

回答

1
i = np.array([1, 2, 1, 3, 2], dtype=int) 
v = np.random.rand(1000) 

r = np.empty(shape=i.shape, dtype=v.dtype) 
r.fill(np.nan) 

unique, _ = np.unique(i, return_inverse=True) 
counts = np.bincount(_) 
r[unique[counts == 1]] = v[unique[counts == 1]] 

>>> r 
array([  nan,  nan,  nan, 0.5650245,  nan]) 
相關問題