2013-03-20 38 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])