6
我有一個numpy主數組。給定另一個重複元素的搜索值數組,我想在主數組中生成這些搜索值的索引。在numpy數組中查找值列表的索引
例如:主陣列[1,2,3,4,5],搜索數組是[4,2,2,3]
解決方案:[3,1,1,2]
是否有一個「本地」numpy函數,這有效地做到了這一點(意味着在C速度,而不是蟒蛇的速度)?
我知道下面的解決方案,但是,首先,它是一個Python列表理解,第二,它會搜索2次索引。
ma = np.array([1,2,3,4,5])
sl = np.array([4,2,2,3])
ans = [np.where(ma==i) for i in sl]
另外,如果我不得不求助於排序和二進制搜索,我會做它作爲最後的手段(雙關語不是各種層次的意)。我有興趣找到我是否缺少numpy庫中基本的東西。這些列表非常大,因此性能非常重要。
謝謝。
編輯: 張貼之前我會試着用令人沮喪的結果如下:
[np.searchsorted(ma,x) for x in sl]
發表@pierre解決的辦法是更高性能和正是我一直在尋找。
絕對!剛剛完成分析您的代碼,它效果很好。將編輯我的問題發佈結果。 – Fenchurch