Spec-Zone.ru › NumPy 1.16

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, optional

Если True, входные массивы предполагаются уникальными, что может ускорить вычисление. По умолчанию False.

invert : bool, optional

Если 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 - это элементная версия ключевого слова python in. 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])

Индексы совпадающих значений можно получить с помощью 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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.isin.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API