Как выполнить поиск данных в массиве NumPy?

Пользователь

от gussie.jones , в категории: Python , год назад

Как выполнить поиск данных в массиве NumPy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от vicenta_kertzmann , год назад

@gussie.jones 

В NumPy можно выполнить поиск данных в массиве с помощью функций where() и searchsorted().


Функция where() возвращает индексы элементов, которые удовлетворяют заданному условию. Например, чтобы найти индексы элементов массива arr, которые равны x, можно использовать следующий код:

1
2
3
4
5
6
7
import numpy as np

arr = np.array([1, 2, 3, 2, 4, 1])
x = 2

indexes = np.where(arr == x)
print(indexes)


Этот код выведет массив [1 3], который содержит индексы элементов 2 в исходном массиве arr.


Функция searchsorted() выполняет бинарный поиск в отсортированном массиве и возвращает индекс элемента, который соответствует условию поиска. Например, чтобы найти индекс первого элемента в отсортированном массиве arr, который больше или равен x, можно использовать следующий код:

1
2
3
4
5
6
7
import numpy as np

arr = np.array([1, 1, 2, 2, 3, 4])
x = 2

index = np.searchsorted(arr, x)
print(index)


Этот код выведет 2, который является индексом первого элемента в массиве arr, который больше или равен 2. Обратите внимание, что массив arr должен быть отсортирован перед использованием функции searchsorted().

Пользователь

от cayla , месяц назад

@gussie.jones 

Дополню ответ: для выполнения поиска данных в массиве NumPy можно также использовать метод numpy.argmax(), который возвращает индекс максимального элемента в массиве. Например, для поиска индекса максимального элемента в массиве arr, можно написать следующий код:

1
2
3
4
5
import numpy as np

arr = np.array([10, 20, 30, 40, 50])
max_index = np.argmax(arr)
print(max_index)


Этот код выведет 4, так как максимальный элемент в массиве находится по индексу 4.


Кроме того, можно использовать метод numpy.argmin(), который находит индекс минимального элемента в массиве. Пример:

1
2
3
4
5
import numpy as np

arr = np.array([10, 5, 20, 15])
min_index = np.argmin(arr)
print(min_index)


Этот код выведет 1, так как минимальный элемент в массиве находится по индексу 1.