Функция intersect1d
Функция intersect1d возвращает отсортированный массив,
содержащий элементы, присутствующие в обоих входных массивах.
По умолчанию возвращаются только уникальные общие значения.
Функция может принимать до четырех параметров: два массива для сравнения,
флаг возврата индексов и флаг работы с уникальными элементами.
Синтаксис
np.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)
Параметры функции:
-
ar1,ar2- входные массивы для поиска пересечений -
assume_unique- еслиTrue, функция не удаляет дубликаты для ускорения работы (по умолчаниюFalse) -
return_indices- еслиTrue, возвращает индексы общих элементов в исходных массивах (по умолчаниюFalse)
Пример
Найдем общие элементы в двух числовых массивах:
import numpy as np
arr1 = np.array([1, 3, 5, 7, 9])
arr2 = np.array([3, 5, 8, 10, 12])
res = np.intersect1d(arr1, arr2)
print(res)
Результат выполнения кода:
[3 5]
Пример
Функция работает с массивами строковых значений:
import numpy as np
arr1 = np.array(['a', 'b', 'c', 'd', 'e'])
arr2 = np.array(['b', 'd', 'f', 'g', 'h'])
res = np.intersect1d(arr1, arr2)
print(res)
Результат выполнения кода:
['b' 'd']
Пример
При включенном флаге return_indices функция возвращает кортеж
из трех массивов: общие элементы и их индексы в каждом из исходных массивов:
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([0, 2, 4, 6, 8])
common, idx1, idx2 = np.intersect1d(arr1, arr2, return_indices=True)
print("Common:", common)
print("Indices in arr1:", idx1)
print("Indices in arr2:", idx2)
Результат выполнения кода:
Common: [2 4]
Indices in arr1: [1 3]
Indices in arr2: [1 2]
Пример
Если массивы содержат дублирующиеся значения, функция по умолчанию возвращает только уникальные общие элементы:
import numpy as np
arr1 = np.array([1, 1, 2, 2, 3, 3])
arr2 = np.array([1, 1, 2, 2, 4, 4])
res = np.intersect1d(arr1, arr2)
print(res)
Результат выполнения кода:
[1 2]
Пример
При работе с большими массивами, если известно, что все элементы уникальны,
можно ускорить работу функцией с флагом assume_unique:
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([3, 4, 5, 6, 7])
res = np.intersect1d(arr1, arr2, assume_unique=True)
print(res)
Результат выполнения кода:
[3 4 5]