>>> a = np.array([1, 1, 2, 3, 3, 4, 5])
>>> b = np.array([1, 3, 4, 5])
>>> indices = np.zeros((len(a)))
>>> for i in range(len(a)):
try:
indices[i] = np.where(b == a[i])[0][0]
except:
indices[i] = -1
>>> indices
array([ 0., 0., -1., 1., 1., 2., 3.])
对于np.array
的每个元素,如何在另一个np.array
中获取其索引,并将常量值(此处为-1
)放在未找到该元素的位置后者?
答案 0 :(得分:3)
使用np.searchsorted
获取索引,然后通过将索引的索引与a
进行比较,然后将其设置为-1
-
idx = np.searchsorted(b,a)
idx[b[idx] != a] =-1
答案 1 :(得分:2)
您可以使用np.searchsorted()
和np.in1d()
:
indices = np.searchsorted(b, a)
indices[~np.in1d(a, b)] = -1
print(indices) # array([ 0, 0, -1, 1, 1, 2, 3])