numpy.isin

numpy.isin(element, test_elements, assume_unique=False, invert=False)[源代码]

计算 element in test_elements ,广播结束 element 只有。返回与形状相同的布尔数组 element 如果一个元素 element 是在 test_elements 否则就错了。

参数
elementarray_like

输入数组。

test_elementsarray_like

用于测试的每个值 element . 如果此参数是类似数组或数组的,则此参数将被展平。有关非数组类参数的行为,请参见注释。

assume_unique可选的布尔

如果为真,则假定输入数组都是唯一的,这可以加快计算速度。默认值为假。

invert可选的布尔

如果为真,则返回的数组中的值将被反转,就像在计算 element not in test_elements . 默认值为假。 np.isin(a, b, invert=True) 等于(但比) np.invert(np.isin(a, b)) .

返回
isin恩达雷

形状与 element . 价值观 element[isin]test_elements .

参见

in1d

此函数的扁平版本。

numpy.lib.arraysetops

具有许多其他函数的模块,用于对数组执行集合操作。

笔记

isin 是python关键字的元素函数版本 in . isin(a, b) 大致相当于 np.array([item in b for item in a]) 如果 ab 是一维序列。

elementtest_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]])