2
我指的是一個類似的問題:Find indices of a list of values in a numpy array查找值的列表的索引中沒有排序numpy的陣列
在我們有我們想要找到被排序的主數組和另一個數組這種情況下,主數組中的索引。
master = np.array([1,2,3,4,5])
search = np.array([4,2,2,3])
建議的解決方案是:
>>> master = np.array([1,2,3,4,5])
>>> search = np.array([4,2,2,3])
>>>np.searchsorted(master, search)
array([3, 1, 1, 2])
但是,如果主人沒有排序是什麼? 例如,如果我有兩個陣列,這樣,其中第一個是沒有排序:
>>>master = np.array([2,3,5,4,1])
>>>search = np.array([3,2,1,4,5])
我得到:
>>> np.searchsorted(master, search)
array([1, 0, 0, 2, 5])
而是我想:
array([1,0,4,3,2])
即在主搜索中的項目索引。 ?
我如何獲得它們可能與numpy的的本地函數(不使用[np.where(主== i)對於我在搜索])
感謝
編輯: 在這如果搜索數組是主數據的排列。然後我想知道如何將主索引置換爲像搜索這樣的排列數組。
由於一般情況下,搜索陣列包含可能包含或不主,如一些項目:
>>>master = np.array([2,3,5,4,1])
>>>search = np.array([1,4,7])
這是一個XY問題嗎?你只是想找到一個給定數組的*排列*?因爲這可以很容易地完成。 –
那麼你想避免排序呢?結果不是你所期望的,因爲'searchsorted'背後的算法假設輸入被排序(如在二進制搜索中)。 – rubik
在我的具體情況下,搜索是master的排列(然後,我的意思是找到導致搜索數組的master的排列索引) –