flopscope.numpy.intersect1d
fnp.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)[flopscope source][numpy source]
Find the intersection of two arrays.
Adapted from NumPy docs np.intersect1d
Set intersection; cost = (n+m)*ceil(log2(n+m)).
Return the sorted, unique values that are in both of the input arrays.
Parameters
- ar1, ar2:array_like
Input arrays. Will be flattened if not already 1D.
- assume_unique:bool
If True, the input arrays are both assumed to be unique, which can speed up the calculation. If True but
ar1orar2are not unique, incorrect results and out-of-bounds indices could result. Default is False.- return_indices:bool
If True, the indices which correspond to the intersection of the two arrays are returned. The first instance of a value is used if there are multiple. Default is False.
Returns
- intersect1d:ndarray
Sorted 1D array of common and unique elements.
- comm1:ndarray
The indices of the first occurrences of the common values in
ar1. Only provided ifreturn_indicesis True.- comm2:ndarray
The indices of the first occurrences of the common values in
ar2. Only provided ifreturn_indicesis True.
Examples
>>> import flopscope.numpy as fnp
>>> flops.intersect1d([1, 3, 4, 3], [3, 1, 2, 1])
array([1, 3])To intersect more than two arrays, use functools.reduce:
>>> from functools import reduce
>>> reduce(flops.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))
array([3])To return the indices of the values common to the input arrays along with the intersected values:
>>> x = flops.array([1, 1, 2, 3, 4])
>>> y = flops.array([2, 1, 4, 6])
>>> xy, x_ind, y_ind = flops.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]))