numpy.intersect1d#
- numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)[source]#
查找两个数组的交集。
返回两个输入数组中都存在的排序且唯一的数值。
- 参数:
- ar1, ar2array_like
输入数组。如果尚未为一维数组,则会被展平。
- assume_uniquebool
如果为 True,则假定两个输入数组都是唯一的,这可以加快计算速度。如果为 True 但
ar1
或ar2
不是唯一的,则可能导致不正确的结果和超出范围的索引。默认为 False。- return_indicesbool
如果为 True,则返回与两个数组的交集对应的索引。如果存在多个,则使用值的第一个实例。默认为 False。
版本 1.15.0 中的新功能。
- 返回值:
- intersect1dndarray
排序后的一维数组,包含公共且唯一的元素。
- comm1ndarray
在 ar1 中公共值的第一次出现的索引。仅当 return_indices 为 True 时提供。
- comm2ndarray
在 ar2 中公共值的第一次出现的索引。仅当 return_indices 为 True 时提供。
示例
>>> import numpy as np >>> np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1]) array([1, 3])
要对两个以上数组求交集,请使用 functools.reduce
>>> from functools import reduce >>> reduce(np.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2])) array([3])
要返回输入数组的公共值的索引以及交集的值
>>> x = np.array([1, 1, 2, 3, 4]) >>> y = np.array([2, 1, 4, 6]) >>> xy, x_ind, y_ind = np.intersect1d(x, y, return_indices=True) >>> x_ind, y_ind (array([0, 2, 4]), array([1, 0, 2])) >>> xy, x[x_ind], y[y_ind] (array([1, 2, 4]), array([1, 2, 4]), array([1, 2, 4]))