0

の整数配列I0 <= I[j] < 1000一意でない整数値I[j]、および の「値」配列Vが与えられた場合、 の値が で一意であり、 の値が で複数回発生する場合V.shape == (1000, )、どのように配列を作成できますRか?R.shape == I.shapeR[j] == V[I[j]]I[j]IR[j] == np.nanI[j]I

EDIT 例として、 が与えられた場合、の唯一の一意の要素であるため、I = np.array([1, 2, 1, 3, 2], dtype=int)結果は になります。V = array([nan, nan, nan, V[3], nan])3I

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 に答える