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

Reply via email to