Numpy in1d() 函数
Numpy in1d() 函数用于测试一个一维数组中的每个元素是否也存在于另一个数组中。它返回一个与输入数组形状相同的布尔数组,其中每个值表示相应元素是否在第二个数组中。
此函数对于执行数组成员关系检查或比较非常有用。它可以处理任何数字或非数字数据类型的数组,包括字符串和对象。
语法
以下是 Numpy in1d() 函数的语法 -
numpy.in1d(ar1, ar2, assume_unique=False, invert=False)
参数
以下是 Numpy in1d() 函数的参数 -
- ar1:需要检查元素的输入数组。
- ar2:用于测试成员资格的数组。
- assume_unique (可选):如果为 True,则假定输入数组是唯一的,这可以加快计算速度。默认值为 False。
- invert(可选):如果为 True,则输出数组中的布尔值将被反转(True 变为 False,反之亦然)。默认值为 False。
返回类型
此函数返回一个与 ar1 形状相同的一维布尔数组,其中每个值表示 ar1 中的对应元素是否在 ar2 中找到。
示例
以下是使用 Numpy in1d() 函数检查一维数组中元素成员关系的基本示例 -
import numpy as np array1 = np.array([10, 20, 30, 40, 50]) array2 = np.array([30, 40, 70]) result = np.in1d(array1, array2) print("布尔数组:", result)
输出
以下是上述代码的输出 -
布尔数组:[False False True True False]
示例:invert 参数的用法
invert 参数可用于反转输出中的布尔值。如果值为 True,它将被转换为 False;如果值为 False,它将被转换为 True。
在下面的示例中,我们通过在 numpy.in1d() 函数中将 invert 参数设置为 True 来反转 resultand 数组。-
import numpy as np array1 = np.array([10, 20, 30, 40, 50]) array2 = np.array([30, 40, 70]) result = np.in1d(array1, array2, invert=True) print("反转布尔数组:", result)
输出
以下是上述代码的输出 -
反转布尔数组:[ True True False False True]
示例:使用非唯一数组
当 assume_unique 设置为 True 时,计算会假定输入数组包含唯一元素。当数组较大且包含重复项时,这可以提高性能 -
import numpy as np array1 = np.array([10, 20, 20, 40, 50]) array2 = np.array([20, 40, 70]) result = np.in1d(array1, array2, assume_unique=True) print("布尔数组:", result)
输出
以下是上述代码的输出 -
布尔数组:[False True True True False]
示例:检查字符串的成员资格
in1d() 函数也可以用于字符串数组。在以下示例中,我们检查了 array1 中的某些字符串是否存在于 array2 中 -
import numpy as np array1 = np.array(["apple", "banana", "cherry"]) array2 = np.array(["banana", "grape"]) result = np.in1d(array1, array2) print("布尔数组:", result)
输出
以下是上述代码的输出 -
布尔数组: [False True False]
示例:'in1d()' 中的多维数组
numpy.in1d() 函数旨在处理扁平数组。当应用于多维数组时,首先将输入数组展平,然后函数检查指定值中是否存在元素 -
import numpy as np array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([2, 3]) result = np.in1d(array1, array2) print("布尔数组:", result)
输出
以下是上述代码的输出 -
布尔数组: [False True True False]