numpy.intersect1d#

numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)[源代码]#

查找两个数组的交集.

返回两个输入数组中都存在的已排序的唯一值.

参数:
ar1, ar2array_like

输入数组.如果还不是 1D,将被扁平化.

assume_uniquebool

如果为 True,则假定输入数组都是唯一的,这可以加快计算速度.如果为 True,但 ar1ar2 不是唯一的,则可能导致不正确的结果和超出范围的索引.默认为 False.

return_indicesbool

如果为 True,则返回与两个数组的交集相对应的索引.如果存在多个值,则使用值的第一个实例.默认为 False.

返回:
intersect1dndarray

公共和唯一元素的已排序 1D 数组.

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]))