在numpy数组中查找最近的值

新手上路,请多包涵

如何在 numpy 数组中找到 _最接近的值_?例子:

 np.find_nearest(array, value)

原文由 Fookatchu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答
import numpy as np
def find_nearest(array, value):
    array = np.asarray(array)
    idx = (np.abs(array - value)).argmin()
    return array[idx]

示例用法:

 array = np.random.random(10)
print(array)
# [ 0.21069679  0.61290182  0.63425412  0.84635244  0.91599191  0.00213826
#   0.17104965  0.56874386  0.57319379  0.28719469]

print(find_nearest(array, value=0.5))
# 0.568743859261

原文由 unutbu 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果 您的数组已排序并且非常大,这是一个更快的解决方案:

 def find_nearest(array,value):
    idx = np.searchsorted(array, value, side="left")
    if idx > 0 and (idx == len(array) or math.fabs(value - array[idx-1]) < math.fabs(value - array[idx])):
        return array[idx-1]
    else:
        return array[idx]

这可以扩展到非常大的阵列。如果您不能假设数组已经排序,您可以轻松修改上面的方法以在方法中排序。这对小阵列来说有点矫枉过正,但一旦它们变大,速度就会快得多。

原文由 Demitri 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题