我有一個主 numpy 陣列a,還有另一個 numpy 陣列b。我想要做的是遍歷每個元素b并檢查該元素是否存在于a. 請記住,兩者a都b非常龐大,所以我想避免 O(N) 搜索時間。
我知道np.searchsorted(a,b)存在,但這提供了一個我需要放置的索引b。這并沒有告訴我一個元素b是否立即出現a。
我的問題是,是否有一個內置于 numpy 中的二進制搜索演算法,如果某個元素b存在于中,它會簡單地報告 True 或 False a?我知道我可以寫一個,但如果有現成的矢量化,我可以節省一些時間。
任何意見,將不勝感激!
uj5u.com熱心網友回復:
完成排序搜索后,您可以檢查這些索引處的元素是否等于 b 中的元素:
a = numpy.array([1,2,3,4,7])
b = numpy.array([1,4,5,7])
x = numpy.searchsorted(a,b)
boolean_array = a[x] == b
searchsorted表示默認情況下side = 'left'它確保:a[i-1] < v <= a[i]所以如果a[i]等于相應的元素,b那么它會給出你想要的匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/533453.html
標籤:Python麻木的
