NumPy поиск массивов
Поиск массивов
Вы можете искать массив для определенного значения и возвращать индексы, которые получают совпадение.
Для поиска в массиве используйте where()
метод.
Пример
Найдите индексы, где значение равно 4:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x =
np.where(arr == 4)
print(x)
Пример выше вернет кортеж:(array([3, 5, 6],)
Это означает, что значение 4 присутствует в индексах 3, 5 и 6.
Пример
Найдите индексы, в которых значения четные:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 0)
print(x)
Пример
Найдите индексы, в которых значения нечетны:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 1)
print(x)
Поиск отсортировано
Вызывается метод, searchsorted()
который выполняет бинарный поиск в массиве и возвращает индекс, в который будет вставлено указанное значение для сохранения порядка поиска.
Предполагается searchsorted()
, что этот метод используется для отсортированных массивов.
Пример
Найдите индексы, в которые нужно вставить значение 7:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7)
print(x)
Объяснение примера: число 7 должно быть вставлено в индекс 1, чтобы сохранить порядок сортировки.
Метод начинает поиск слева и возвращает первый индекс, где число 7 уже не больше следующего значения.
Поиск с правой стороны
По умолчанию возвращается самый левый индекс, но мы можем side='right'
вместо этого вернуть самый правый индекс.
Пример
Найдите индексы, в которые нужно вставить значение 7, начиная справа:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7, side='right')
print(x)
Объяснение примера: число 7 должно быть вставлено в индекс 2, чтобы сохранить порядок сортировки.
Метод начинает поиск справа и возвращает первый индекс, где число 7 уже не меньше следующего значения.
Несколько значений
Для поиска более одного значения используйте массив с указанными значениями.
Пример
Найдите индексы, в которые следует вставить значения 2, 4 и 6:
import numpy as np
arr = np.array([1,
3, 5, 7])
x =
np.searchsorted(arr, [2, 4, 6])
print(x)
Возвращаемое значение представляет собой массив: [1 2 3]
содержащий три индекса, где 2, 4, 6 должны быть вставлены в исходный массив для сохранения порядка.