python - Find unsorted indices after using numpy.searchsorted -


i have large (millions) array of id numbers ids, , want find indices array of targets (targets) exist in ids array. example, if

ids = [22, 5, 4, 0, 100] targets = [5, 0] 

then want result:

>>> [1,3] 

if pre-sort array of ids, it's easy find matches using numpy.searchsorted, e.g.

>>> ids = np.array([22, 5, 4, 0, 100]) >>> targets = [5, 0] >>> sort = np.argsort(ids) >>> ids[sort] [0,4,5,22,100] >>> np.searchsorted(ids, targets, sorter=sort) [2,0] 

but how can find reverse mapping 'unsort' result? i.e. map sorted entries @ [2,0] before: [1,3].

there few answers dancing around already, make clear need use sort[rank].

# setup ids = np.array([22, 5, 4, 0, 100]) targets = np.array([5, 0])  sort = np.argsort(ids) rank = np.searchsorted(ids, targets, sorter=sort) print(sort[rank]) # array([1, 3]) 

Comments

Popular posts from this blog

css - SVG using textPath a symbol not rendering in Firefox -

Java 8 + Maven Javadoc plugin: Error fetching URL -

datatable - Matlab struct computations -