[Numpy-discussion] How to find indices of values in an array (indirect in1d) ?

Mark Miller markperrymiller at gmail.com
Wed Dec 30 13:40:15 EST 2015


I was not familiar with the .in1d function. That's pretty handy.

Yes...it looks like numpy.where(numpy.in1d(b, a)) does what you need.

>>> numpy.where(numpy.in1d(b, a))
(array([1, 2, 5, 7], dtype=int64),)
It would be interesting to see the benchmarks.


On Wed, Dec 30, 2015 at 10:17 AM, Nicolas P. Rougier <
Nicolas.Rougier at inria.fr> wrote:

>
> Yes, it is the expected result. Thanks.
> Maybe the set(a) & set(b) can be replaced by np.where[np.in1d(a,b)], no ?
>
> > On 30 Dec 2015, at 18:42, Mark Miller <markperrymiller at gmail.com> wrote:
> >
> > I'm not 100% sure that I get the question, but does this help at all?
> >
> > >>> a = numpy.array([3,2,8,7])
> > >>> b = numpy.array([1,3,2,4,5,7,6,8,9])
> > >>> c = set(a) & set(b)
> > >>> c #contains elements of a that are in b (and vice versa)
> > set([8, 2, 3, 7])
> > >>> indices = numpy.where([x in c for x in b])[0]
> > >>> indices #indices of b where the elements of a in b occur
> > array([1, 2, 5, 7], dtype=int64)
> >
> > -Mark
> >
> >
> > On Wed, Dec 30, 2015 at 6:45 AM, Nicolas P. Rougier <
> Nicolas.Rougier at inria.fr> wrote:
> >
> > I’m scratching my head around a small problem but I can’t find a
> vectorized solution.
> > I have 2 arrays A and B and I would like to get the indices (relative to
> B) of elements of A that are in B:
> >
> > >>> A = np.array([2,0,1,4])
> > >>> B = np.array([1,2,0])
> > >>> print (some_function(A,B))
> > [1,2,0]
> >
> > # A[0] == 2 is in B and 2 == B[1] -> 1
> > # A[1] == 0 is in B and 0 == B[2] -> 2
> > # A[2] == 1 is in B and 1 == B[0] -> 0
> >
> > Any idea ? I tried numpy.in1d with no luck.
> >
> >
> > Nicolas
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > https://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > https://mail.scipy.org/mailman/listinfo/numpy-discussion
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20151230/df757a8a/attachment.html>


More information about the NumPy-Discussion mailing list