Seems reasonable. I don't know if it is faster, but NumPy is all about vectorization.
Surely speed needs to fit into equation somehow?
Another point to consider. Is function `in1d` able to achieve everything that `intersect1d` does?
For 2 arrays of length 1600.
def intersect1d_via_in1d(x, y):
return np.unique(r1[np.in1d(x, y)])
%timeit np.intersect1d(r1, r2) # 927 µs ± 10.2
%timeit intersect1d_via_in1d(r1, r2) # 163 µs ± 1.73
Retrieving indices and other outputs that `intersect1d` provides also seems trivial.
If it is faster and doesn’t consume more memory, then maybe it is more worthwhile re-using it in `intersect1d`?
Regards,
DG