попробуйте numpy.in1d ... из документации ....
Проверьте, присутствует ли каждый элемент одномерного массива во втором массиве.
Возвращает логический массив той же длины, что и ar1
, что является True
где элемент ar1
находится в ar2
и False в противном случае.
Параметры
ar1: массив_подобный, форма (M,)
Входной массив.
ar2: array_like
Значения, по которым проверяется каждое значение ar1
.
accept_unique: bool, необязательно
Если True, то входные массивы оба предполагаются уникальными, что
может ускорить расчет. По умолчанию установлено значение False.
Возвращает
маска: ndarray из bools, форма (M,)
Значения ar1[mask]
находятся в ar2
.
См. Также
numpy.lib.arraysetops: модуль с рядом других функций для
выполнение операций над множествами над массивами.
Примечания
in1d
можно рассматривать как вариант поэлементной функции
ключевое слово python in
, для одномерных последовательностей. in1d(a, b)
примерно
эквивалентно np.array([item in b for item in a])
.
.. версия добавлена :: 1.4.0
Примеры
test = np.array([0, 1, 2, 5, 0])
states = [0, 2]
mask = np.in1d(test, states)
mask
array([ True, False, True, False, True], dtype=bool)
test[mask]
array([0, 2, 0])