On Fri, Nov 28, 2014 at 8:40 AM, Julian Taylor < jtaylor.deb...@googlemail.com> wrote:
> On 28.11.2014 09:37, Robert Kern wrote: > > On Fri, Nov 28, 2014 at 8:22 AM, Julian Taylor > > <jtaylor.deb...@googlemail.com <mailto:jtaylor.deb...@googlemail.com>> > > wrote: > >> > >> On 28.11.2014 04:15, Alexander Belopolsky wrote: > >> > I probably miss something very basic, but how given two arrays a and > b, > >> > can I find positions in a where elements of b are located? If a were > >> > sorted, I could use searchsorted, but I don't want to get valid > >> > positions for elements that are not in a. In my case, a has unique > >> > elements, but in the general case I would accept the first match. In > >> > other words, I am looking for an array analog of list.index() method. > >> > >> np.where(np.in1d(a, b)) > > > > Only if the matching elements in `b` have the same order as they do in > `a`. > > > > seems to work also if unordered: > In [32]: a = np.arange(1000) > > In [33]: b = np.arange(500,550, 3) > > In [34]: np.random.shuffle(a) > > In [35]: np.random.shuffle(b) > > In [36]: np.where(np.in1d(a, b)) > Out[36]: > (array([ 0, 106, 133, 149, 238, 398, 418, 498, 533, 541, 545, 589, 634, > 798, 846, 891, 965]),) I meant that the OP is asking for something stricter than that. He wants this array of indices to be in the order in which those matching elements appear in `b` so that he can use this information to merge two datasets. -- Robert Kern
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion