python isin_python numpy isin用法及代码示例

计算test_elements中的元素,仅在元素上广播。返回一个与元素具有相同形状的布尔数组,为true,其中element的元素位于test_elements中,否则为False。

参数:element: : array_like

输入数组。

test_elements: : array_like

用于测试每个元素值的值。如果它是array或数组,则将其展平。有关非类数组参数的行为,请参见注释。

assume_unique: : bool, 可选参数

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

invert: : bool, 可选参数

如果为True,则将返回数组中的值取反,就像计算元素不在test_elements中一样。默认值为False。np.isin(a, b, invert=True)等价于(但比…快)np.invert(np.isin(a, b))。

返回值:isin: : ndarray,布尔

具有与元素相同的形状。值元素[isin]在test_elements中。

注意:

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

元件和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]])

你可能感兴趣的:(python,isin)