Dil*_*rix 5 python sorting algorithm search numpy
我有一个大的(数百万)ID号数组ids,我想找到数组中targets存在另一个targets()数组的索引ids.例如,如果
ids = [22, 5, 4, 0, 100]
targets = [5, 0]
Run Code Online (Sandbox Code Playgroud)
然后我想要结果:
>>> [1,3]
Run Code Online (Sandbox Code Playgroud)
如果我对数组进行预排序ids,那么很容易找到匹配numpy.searchsorted,例如
>>> 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]
Run Code Online (Sandbox Code Playgroud)
但是如何找到反向映射到'unsort'这个结果呢?即将已排序的条目映射[2,0]到它们之前的位置:[1,3].
有一些答案已经在这周围跳舞,但只是为了说明你需要做的就是使用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])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |