当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.array.isin用法及代码示例


用法:

dask.array.isin(element, test_elements, assume_unique=False, invert=False)

计算 element in test_elements ,仅在 element 上广播。返回与 element 形状相同的布尔数组,如果 element 的元素在 test_elements 中,则返回 True,否则返回 False。

参数

elementarray_like

输入数组。

test_elementsarray_like

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

assume_unique布尔型,可选

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

invert布尔型,可选

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

返回

isinndarray,布尔

具有与 element 相同的形状。值 element[isin]test_elements 中。

注意

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

elementtest_elements 如果尚未转换为数组,则它们将被转换为数组。如果 test_elements 是一个集合(或其他非序列集合),它将被转换为具有一个元素的对象数组,而不是包含在 test_elements 中的值的数组。这是 array 构造函数处理非序列集合的方式的结果。将集合转换为列表通常会产生所需的行为。

例子

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

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.array.isin。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。