On Thu, Aug 5, 2010 at 10:26 AM, <[email protected]> wrote: > On Thu, Aug 5, 2010 at 1:12 PM, Martin Spacek <[email protected]> wrote: >> I want to take an n x m array "a" and index into it using an integer index >> array >> "i" of length n that will pull out the value at the designated column from >> each >> corresponding row of "a". >> >>>>> a = np.arange(10) >>>>> a.shape = 5, 2 >>>>> a >> array([[0, 1], >> [2, 3], >> [4, 5], >> [6, 7], >> [8, 9]]) >>>>> i = np.array([0, 1, 1, 0, 1]) >> >> I want: >> >>>>> b = a.foo(i) >>>>> b >> array([0, 3, 5, 6, 9]) >> >> What's foo? I can't get take() to do what I want. I went and wrote my own >> little >> Cython function to do this, but that seems silly (and is also array dtype >> dependent). I've tried reading through the numpy book, and I'm sure this is >> somewhere on the list, but I can't find it. I think it has something to do >> with >> fancy indexing. I should know how to do this by know... > > like this ?
Yes, I like it. Textbook case of fancy indexing. > >>>> a= np.array([[0, 1], > [2, 3], > [4, 5], > [6, 7], > [8, 9]]) >>>> i = np.array([0, 1, 1, 0, 1]) >>>> a[range(a.shape[0]), i] > array([0, 3, 5, 6, 9]) >>>> a[np.arange(a.shape[0]), i] > array([0, 3, 5, 6, 9]) > > Josef > >> >> Cheers, >> >> Martin >> >> _______________________________________________ >> NumPy-Discussion mailing list >> [email protected] >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
