numpy.isin
-
numpy.isin(element, test_elements, assume_unique=False, invert=False)[source] -
Вычисляет
element in test_elements, выполняя широковещательную передачу только поelement. Возвращает булеву массив того же размера, что иelement, равную True, где элемент изelementсодержится вtest_elements, и False в противном случае.Параметры: element : array_like
Входной массив.
test_elements : array_like
Значения, с которыми сравнивать каждый элемент
element. Этот аргумент сплющивается, если он является массивом или массивоподобным объектом. См. примечания для поведения с не массивоподобными параметрами.assume_unique : bool, необязательно
Если True, оба входных массива предполагаются уникальными, что может ускорить вычисление. По умолчанию False.
invert : bool, необязательно
Если True, значения в возвращаемом массиве инвертируются, как если бы вычислялось
element not in test_elements. По умолчанию False.np.isin(a, b, invert=True)эквивалентно (но быстрее), чемnp.invert(np.isin(a, b)).Возвращает: isin : ndarray, 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обрабатывает коллекции, не являющиеся последовательностями. Преобразование множества в список обычно дает желаемый результат.Добавлена в версии 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]) >>> 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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.isin.html