<div dir="ltr"><div><div>Maybe use searchsorted()? I will note that I have needed to do something like this once before, and I found that the list comprehension form of calling .index() for each item was faster than jumping through hoops to vectorize it using searchsorted (needing to sort and then map the sorted indices to the original indices), and was certainly clearer, but that might depend upon the problem size.<br><br></div>Cheers!<br></div>Ben Root<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 30, 2015 at 10:02 AM, Andy Ray Terrel <span dir="ltr"><<a href="mailto:andy.terrel@gmail.com" target="_blank">andy.terrel@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Using pandas one can do:<div><br></div><div><span class=""><div><span style="font-size:12.8px">>>></span><span style="font-size:12.8px"> </span>A = np.array([2,0,1,4])</div><div><span style="font-size:12.8px">>>></span><span style="font-size:12.8px"> </span>B = np.array([1,2,0])</div></span><div><span style="font-size:12.8px">>>></span><span style="font-size:12.8px"> </span>s = pd.Series(range(len(B)), index=B)</div><div><span style="font-size:12.8px">>>></span><span style="font-size:12.8px"> </span>s[A].values</div><div><div>array([  1.,   2.,   0.,  nan])</div><div><br></div></div></div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 30, 2015 at 8:45 AM, Nicolas P. Rougier <span dir="ltr"><<a href="mailto:Nicolas.Rougier@inria.fr" target="_blank">Nicolas.Rougier@inria.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
I’m scratching my head around a small problem but I can’t find a vectorized solution.<br>
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:<br>
<br>
>>> A = np.array([2,0,1,4])<br>
>>> B = np.array([1,2,0])<br>
>>> print (some_function(A,B))<br>
[1,2,0]<br>
<br>
# A[0] == 2 is in B and 2 == B[1] -> 1<br>
# A[1] == 0 is in B and 0 == B[2] -> 2<br>
# A[2] == 1 is in B and 1 == B[0] -> 0<br>
<br>
Any idea ? I tried numpy.in1d with no luck.<br>
<br>
<br>
Nicolas<br>
<br>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br></div>