📜  Python| numpy.isin() 方法(1)

📅  最后修改于: 2023-12-03 15:19:14.638000             🧑  作者: Mango

Python | numpy.isin() 方法

numpy.isin() 方法用于检查两个数组中的元素是否相同,并返回一个布尔值数组,该数组指示第一个数组中的元素是否包含在第二个数组中。

语法
numpy.isin(element, test_elements, assume_unique=False, invert=False)
参数
  • element - 输入数组,将被检索在test_elements中。
  • test_elements - 它是数组,用于测试元素是否出现在element中。
  • assume_unique - 如果为真,则将输入特定为唯一。
  • invert - 如果为真,则计算逆。
返回值

返回一个与element数组的形状相同的布尔数组。返回的数组将是element数组的副本。

示例
import numpy as np
  
in_arr1 = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
in_arr2 = [ 2, 4, 6 ]
  
print ("Input array1 : ", in_arr1) 
print ("Input array2 : ", in_arr2) 
  
out_arr = np.isin(in_arr1, in_arr2) 
print ("Output array : ", out_arr) 

输出:

Input array1 :  [1, 2, 3, 4, 5, 6, 7, 8]
Input array2 :  [2, 4, 6]
Output array :  [False  True False  True False  True False False]

本例子中,通过numpy.isin()方法检查in_arr1数组中的每个元素是否存在于in_arr2数组中,返回布尔数组out_arr表示是否在in_arr2中发现了相应的元素。

测试唯一元素

在下例中,assume_unique参数被设置为True,说明输入数组都已经唯一排列好了,可以看到性能有了提升:

import numpy as np
  
in_arr1 = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
in_arr2 = [ 2, 4, 6 ]
  
# Output with 'assume_unique=False'
out_arr = np.isin(in_arr1, in_arr2) 
print ("Output array : ", out_arr) 
  
# Output with 'assume_unique=True'
out_arr = np.isin(in_arr1, in_arr2, assume_unique=True) 
print ("Output array : ", out_arr) 

输出:

Output array :  [False  True False  True False  True False False]
Output array :  [False  True False  True False  True False False]
布尔反转

在下例中,invert参数被设置为True,可以看到输出结果和上例相反:

import numpy as np
  
in_arr1 = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
in_arr2 = [ 2, 4, 6 ]
  
# Output with 'invert=False'
out_arr = np.isin(in_arr1, in_arr2) 
print ("Output array : ", out_arr) 
  
# Output with 'invert=True'
out_arr = np.isin(in_arr1, in_arr2, invert=True) 
print ("Output array : ", out_arr) 

输出:

Output array :  [False  True False  True False  True False False]
Output array :  [ True False  True False  True False  True  True]
结论

numpy.isin() 方法是一种非常有效的检查两个数组是否存在相同元素的方式。它可以非常方便地用于基础Python和数据分析中。