Numpy intersect1d() 函数
Numpy intersect1d() 函数用于求两个数组的交集。它返回一个已排序的数组,其中包含两个输入数组中均存在的元素。此函数可用于识别数组之间的公共元素,无论它们包含数字还是非数字数据类型,例如字符串或对象。
Numpy intersect1d() 函数还可以通过将 return_indices 参数设置为 True 来识别两个输入数组中公共元素的索引。
语法
以下是 Numpy intersect1d() 函数的语法 -
numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)
参数
以下是 Numpy intersect1d() 函数的参数函数 −
- ar1:第一个输入数组。
- ar2:第二个输入数组。
- assume_unique(可选):如果为 True,则假定输入数组是唯一的,这可以加快计算速度。默认值为 False。
- return_indices(可选):如果为 True,则原始数组中共享元素的索引将作为附加输出返回。默认值为 False。
返回类型
此函数返回一个已排序的一维数组,其中包含两个输入数组中均存在的唯一元素。
示例
以下是使用 Numpy intersect1d() 函数查找两个数组交集的基本示例 -
import numpy as np array1 = np.array([10, 20, 30, 40, 50]) array2 = np.array([30, 40, 70]) result = np.intersect1d(array1, array2) print("交集:", result)
输出
以下是上述代码的输出 -
交集:[30 40]
示例:assume_unique 参数的用法
当 assume_unique 设置为 True 时,函数会跳过内部唯一性检查,从而在已知数组包含唯一元素时提高性能 -
import numpy as np array1 = np.array([10, 20, 30, 40]) array2 = np.array([30, 40, 50, 60]) result = np.intersect1d(array1, array2,假设_unique=True) print("假设_unique=True 的交集:", result)
输出
以下是上述代码的输出 -
假设_unique=True 的交集: [30 40]
示例:使用 return_indices 参数
return_indices 参数返回原始数组中相交元素的索引。这对于定位公共元素的位置很有用 -
import numpy as np array1 = np.array([10, 20, 30, 40, 50]) array2 = np.array([30, 40, 70]) result, idx1, idx2 = np.intersect1d(array1, array2, return_indices=True) print("交集:", result) print("array1 中的索引:", idx1) print("array2 中的索引:", idx2)
输出
以下是上述代码的输出 -
交集:[30 40] array1 中的索引:[2 3] array2 中的索引:[0 1]
示例:将字符串作为参数传递
intersect1d() 函数也可以应用于字符串数组。在以下示例中,我们找到了 array1 和 array2 之间的公共字符串 -
import numpy as np array1 = np.array(["apple", "banana", "cherry"]) array2 = np.array(["banana", "grape", "cherry"]) result = np.intersect1d(array1, array2) print("Intersection:", result)
输出
以下是上述代码的输出 -
Intersection: ['banana' 'cherry']
示例:多维数组
当对多维数组使用 intersect1d() 函数时,首先会展平输入数组,然后再求交集。输出仍然是一个一维数组,其中包含两个输入数组中唯一元素 -
import numpy as np array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[3, 4], [5, 6]]) result = np.intersect1d(array1, array2) print("交集:", result)
输出
以下是上述代码的输出 -
交集: [3 4]