# Find nearest value in numpy array

### Question

Is there a numpy-thonic way, e.g. function, to find the nearest value in an array?

Example:

``````np.find_nearest( array, value )
``````
1
285
5/7/2017 9:29:20 PM

``````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]

value = 0.5

print(find_nearest(array, value))
# 0.568743859261
``````
450
5/15/2018 10:57:25 AM

IF your array is sorted and is very large, this is a much faster solution:

``````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]
``````

This scales to very large arrays. You can easily modify the above to sort in the method if you can't assume that the array is already sorted. Itâ€™s overkill for small arrays, but once they get large this is much faster.