[Numpy-discussion] how to do a proper 2 column sort on a 2 dimensional array ??

josef.pktd@gmai... josef.pktd@gmai...
Tue Jan 19 12:15:16 CST 2010


On Tue, Jan 19, 2010 at 1:09 PM, Robert Kern <robert.kern@gmail.com> wrote:
> On Tue, Jan 19, 2010 at 11:53, robert somerville <somervi8@telus.net> wrote:
>> Hi;
>>  i am having trouble trying to sort the rows of a 2 dimensional array by the
>> values in the first column .. does anybody know how or have an example of
>> how to do this ??? while leaving the remain columns remain relative to the
>> leading column
>>
>> from numpy import *
>>
>> a=array( [ [4, 4, 3], [4, 5, 2],  [3, 1, 1] ] )
>>
>> i would like to generate the output (or get the output ...)
>>
>> b = [ [3,1,1], [4,4,3], [4,5,2] ]
>>
>> to be specific the primary sort is on the the first column, and within the
>> primary key, i would like to do a seconday sort of the matrix based on 2nd
>> column ..
>
> Let's modify your example slightly so I don't make the same mistake I
> did on comp.lang.python. Let's make sure that the input data is not
> already partially ordered by the second column. All we need to do is
> swap the first two rows.
>
> In [9]: a = np.array( [ [4, 5, 2], [4, 4, 3], [3, 1, 1] ] )
>
> In [10]: i = np.lexsort((a[:,1], a[:,0]))
>
> In [11]: b = a[i]
>
> In [12]: b
> Out[12]:
> array([[3, 1, 1],
>       [4, 4, 3],
>       [4, 5, 2]])
>
>
> Note that in the lexsort() call, the second column comes first. You
> can think of the procedure as "sort by the second column, now sort by
> the first column; where there are ties in the first column, the order
> is left alone from the previous sort on the second column".
>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless
> enigma that is made terrible by our own mad attempt to interpret it as
> though it had an underlying truth."
>  -- Umberto Eco
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>

see also numpy discussion 12/21/2008 "is there a sortrows" when I
struggled with it

Josef


More information about the NumPy-Discussion mailing list