這裏的目標是速度 - 我試圖擺脫通過有問題的數組循環。但是可以假設這兩個數組是排序的。在兩個numpy數組中找到最接近的值
a = np.arange(10)
b = np.array([2.3, 3.5, 5.8, 13])
c = somefunc(a,b)
現在somefunc
應該找到的a
的指數,其在b
值最接近太,即
In []: c
Out[]: array([2, 3or4, 6, 9]) #3 or 4 depending on python2 or 3
再次,這可能是一個循環中完成,但我尋找的東西快得多。我採取的絕對差值類型的方法,喜歡的東西相當接近:
np.argmin(np.abs(a[:, np.newaxis] - b), axis=0)
但是,即使這是一個有點慢的很多不必要的減法完成。
我想你可能希望'c'是'array([2,3,6,9])',因爲你在比較'arange(10)',它從0開始。 – Praveen
你是什麼意思是當你說你的'argmin'結果不會給每個'b'值一個索引?它對我來說...... – Praveen
應該不是'[2,4,6,9]'而是? – Divakar