Я использую np.searchsorted () правильно? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть список целых чисел, и я подумал, что могу использовать np.searchsorted () , чтобы выполнить двоичный поиск для поиска ближайшего целого числа. Итак, я попытался,

Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> B = [0, 36, 75, 111, 162, 198, 237, 273]
>>> np.searchsorted(B, 210)
6
>>> B[np.searchsorted(B, 210)]
237

Разве ближайший сосед 210 не должен быть 198? Есть ли нативная библиотека Python 3, которая делает то, что я хочу? Я мог бы реализовать это сам, но я ищу самую быструю реализацию.

1 Ответ

0 голосов
/ 12 апреля 2020

Я думаю, np.argmin() подходит для вашей цели.

Попробуйте этот код.

import numpy as np
B = np.array([1,2,3,4,5]) 
criterion = 4 

ind = np.argmin(np.abs(B - criterion)) # find the index i, where i'th element is the closest to criterion
print(B[ind])
...