我找到了这篇文章:python:在数组中查找元素
它是通过匹配值返回数组的索引。
另一方面,我想做的是相似但不同的事情。我想找到目标值的最近值。例如,我在寻找4.2,但我知道数组中没有4.2,但我想返回值4.1的索引,而不是4.4。
最快的方法是什么?
我想用老方法来做,就像我以前用matlab做的一样,它使用数组a,我想从中得到索引,减去目标值,然后取其绝对值,然后选择最小值。类似这样:
[~,idx] = min(abs(A - target))
这是matlab代码,但我是python的新手,所以我想,在python中有没有一种快速的方法?
非常感谢你的帮助!
stackoverflow.com/questions/2566412/…和stackoverflow.com/questions/6065697/…可能有用。
这类似于使用左平分,但它可以让你通过一系列的目标
def find_closest(A, target):
#A must be sorted
idx = A.searchsorted(target)
idx = np.clip(idx, 1, len(A)-1)
left = A[idx-1]
right = A[idx]
idx -= target - left < right - target
return idx
一些解释: