fork download
  1. import numpy as np
  2.  
  3. arr = np.array([0.23, 2.32, 4.04, 5.02, 6.84, 10.12, 10.34, 11.93,12.44])
  4.  
  5. def binary_search(arr, val):
  6. i = np.searchsorted(arr, val)
  7.  
  8. if i in {len(arr), len(arr) - 1}:
  9. return i - 1
  10. elif np.isclose(arr[i], val):
  11. return i
  12.  
  13. return i if abs(arr[i] - val) <= abs(arr[i + 1] - val) else i + 1
  14.  
  15. for case in [12.43, 0.5]:
  16. print(binary_search(arr, case))
  17. print(arr[binary_search(arr, case)])
Success #stdin #stdout 0.14s 24872KB
stdin
Standard input is empty
stdout
7
11.93
1
2.32