0

给定一个具有 的整数数组I0 <= I[j] < 1000具有非唯一的整数值I[j],以及一个具有 的“值”数组VV.shape == (1000, )我如何创建一个R具有R.shape == I.shape这样的数组,R[j] == V[I[j]]如果I[j]在 中是唯一的I,并且R[j] == np.nan如果 的值在 中I[j]出现多次I

编辑 例如,给定I = np.array([1, 2, 1, 3, 2], dtype=int),结果应该是V = array([nan, nan, nan, V[3], nan]),因为3是 的唯一唯一元素I

4

1 回答 1

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])
于 2013-03-20T18:53:11.123 回答