flopscope.

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

Areacore
Typecustom
Cost
per-operation
Flopscope Context

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 ar1 or ar2 are 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 if return_indices is True.

comm2:ndarray

The indices of the first occurrences of the common values in ar2. Only provided if return_indices is 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]))