On Tue, Jan 15, 2013 at 4:50 AM, Mads Ipsen <madsip...@gmail.com> wrote:
> Hi, > > I simply can't understand this. I'm trying to use argsort to produce > indices that can be used to sort an array: > > from numpy import * > > indices = array([[4,3],[1,12],[23,7],[11,6],[8,9]]) > args = argsort(indices, axis=0) > print indices[args] > > gives: > > [[[ 1 12] > [ 4 3]] > > [[ 4 3] > [11 6]] > > [[ 8 9] > [23 7]] > > [[11 6] > [ 8 9]] > > [[23 7] > [ 1 12]]] > > I thought this should produce a sorted version of the indices array. > > Any help is appreciated. > > Fancy indexing is a funny creature and not easy to understand in more than one dimension. What is happening is that each index is replaced by the corresponding row of a and the result is of shape (5,2,2). To do what you want to do: In [20]: a[i, [[0,1]]*5] Out[20]: array([[ 1, 3], [ 4, 6], [ 8, 7], [11, 9], [23, 12]]) I agree that there should be an easier way to do this. Chuck
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion