我指的是一个类似的问题:在 numpy 数组中查找值列表的索引
在这种情况下,我们有一个已排序的主数组和另一个我们想要在主数组中找到索引的数组。
master = np.array([1,2,3,4,5])
search = np.array([4,2,2,3])
Run Code Online (Sandbox Code Playgroud)
建议的解决方案是:
>>> master = np.array([1,2,3,4,5])
>>> search = np.array([4,2,2,3])
>>>np.searchsorted(master, search)
array([3, 1, 1, 2])
Run Code Online (Sandbox Code Playgroud)
但是如果 master 没有被排序呢?例如,如果我有两个这样的数组,其中第一个未排序:
>>>master = np.array([2,3,5,4,1])
>>>search = np.array([3,2,1,4,5])
Run Code Online (Sandbox Code Playgroud)
我得到:
>>> np.searchsorted(master, search)
array([1, 0, 0, 2, 5])
Run Code Online (Sandbox Code Playgroud)
但相反,我想:
array([1,0,4,3,2])
Run Code Online (Sandbox Code Playgroud)
即在 master 中搜索的项目的索引。
我如何使用 numpy 的本机功能获取它们?(不使用 [np.where(master==i) for i in search])
谢谢
编辑:在这种情况下,搜索数组是 master 的排列。然后我想找到如何排列 master 的索引以提供类似搜索的排列数组。
作为一般情况,搜索数组包含一些可能包含或不包含在 master 中的项目,例如:
>>>master = np.array([2,3,5,4,1])
>>>search = np.array([1,4,7])
Run Code Online (Sandbox Code Playgroud)