ここでの目的はスピードです。問題の配列をループするのをやめようとしています。しかし、2つの配列がソートされていると仮定することができます。2つのnumpy配列で最も近い値を見つける
今a = np.arange(10)
b = np.array([2.3, 3.5, 5.8, 13])
c = somefunc(a,b)
somefunc
b
の値があまりにも最も近いいるa
のインデックスが、すなわち
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)
しかし、これは少しでも不必要な減算が行われるため、少し遅いです。
0から始まる 'arange(10)'と比較しているので、おそらく 'c'を' array([2,3,6,9]) 'にしたいと思います。 – Praveen
あなたの 'argmin'の結果が' b'値ごとに単一のインデックスを与えないと言ったときの意味ですか?それは私のためになります... – Praveen
代わりに[[2,4,6,9] 'ではありませんか? – Divakar