Найдите первое значение, которое соответствует критериям, а не его индекс - PullRequest
1 голос
/ 20 апреля 2020

У меня есть массив с этими элементами:

array= [21558  43101  64638  86173 107701 129232 150775 172355 193864 215457
237071 258586 280130 301687 23255 344790 366285 387838 409365 430856
452367 473893 495456 516955 538543 560110 581641 603188]

В моей программе есть переменная n, которая сортируется случайным образом. То, чего я пытаюсь достичь, очень просто, но я просто не могу заставить что-либо работать.

В строке ниже я найду индекс первого значения, который больше n

value_index=np.where(array > n)[0][0]

Мне нужно найти значение, которое оно представляет, а не индекс.

Конечно, я могу просто вставить переменную value_index и вызвать значение в список, но я стараюсь быть максимально эффективным.

Может кто-нибудь помочь мне найти самый быстрый способ найти это значение?

1 Ответ

1 голос
/ 20 апреля 2020

Numpy как правило, не очень хорошо получается получить первое из чего-либо без предварительного вычисления остальных значений. Не существует эквивалента

next(x  for x in array if x > n)

Питона. Вместо этого вы должны вычислить маску x > n и получить первый индекс этого. Есть лучшие способы сделать это, чем np.where:

ind = np.flatnonzero(array > n)[0]

ИЛИ

ind = np.argmax(array > n)[0]

В любом случае, лучшая ставка для получения значения -

array[ind]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...