numpy.isin
-
numpy.isin(element, test_elements, assume_unique=False, invert=False)[source] -
Вычисляет
element in test_elements, транслируя поelementтолько. Возвращает булеву массив той же формы, что иelement, который равен True, где элементelementнаходится вtest_elements, и False в противном случае.- Параметры
-
-
elementarray_like -
Вводной массив.
-
test_elementsarray_like -
Значения, по которым тестировать каждый элемент
element. Этот аргумент сплющивается, если это массив или массив наподобие массива. См. примечания для поведения с параметрами, не являющимися массивами. -
assume_uniquebool, optional -
Если True, входные массивы считаются уникальными, что может ускорить вычисление. По умолчанию False.
-
invertbool, optional -
Если True, значения в возвращаемом массиве инвертируются, как если бы вычислялось
element not in test_elements. По умолчанию False.np.isin(a, b, invert=True)эквивалентно (но быстрее), чемnp.invert(np.isin(a, b)).
-
- Возвращает
-
-
isinndarray, bool -
Имеет ту же форму, что и
element. Значенияelement[isin]находятся вtest_elements.
-
См. также
-
in1d -
Сплющенная версия этой функции.
-
numpy.lib.arraysetops -
Модуль с несколькими другими функциями для выполнения операций над множествами в массивах.
Примечания
isin- это функция поэлементного вычисления версии ключевого слова pythonin.isin(a, b)примерно эквивалентноnp.array([item in b for item in a]), еслиaиbявляются одномерными последовательностями.elementиtest_elementsпреобразуются в массивы, если они еще не являются таковыми. Еслиtest_elements— множество (или другой набор, не являющийся последовательностью), оно будет преобразовано в массив объектов с одним элементом, а не в массив значений, содержащихся вtest_elements. Это следствие способа работы конструктораarrayс наборами, не являющимися последовательностями. Преобразование множества в список обычно дает желаемое поведение.New in version 1.13.0.
Примеры
>>> element = 2*np.arange(4).reshape((2, 2)) >>> element array([[0, 2], [4, 6]]) >>> test_elements = [1, 2, 4, 8] >>> mask = np.isin(element, test_elements) >>> mask array([[False, True], [ True, False]]) >>> element[mask] array([2, 4])Индексы совпадающих значений можно получить с помощью
nonzero:>>> np.nonzero(mask) (array([0, 1]), array([1, 0]))
Тест также можно инвертировать:
>>> mask = np.isin(element, test_elements, invert=True) >>> mask array([[ True, False], [False, True]]) >>> element[mask] array([0, 6])Из-за того, как
arrayобрабатывает множества, следующее не работает как ожидается:>>> test_set = {1, 2, 4, 8} >>> np.isin(element, test_set) array([[False, False], [False, False]])Преобразование множества в список дает ожидаемый результат:
>>> np.isin(element, list(test_set)) array([[False, True], [ True, False]])
© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.isin.html