[Numpy-discussion] array sort questions

CL WU anewgene at hotpop.com
Wed Sep 17 13:55:13 CDT 2003


Thank you, Tim.  argsort() and take() does provide a easy way to sort an 
array based on any col or row. But for the second question, it doesn't 
return the result I want.
As below, softrank or softrank1  are functions I am currently using for 
get the rank of a vector(first is more efficient). It returns the index 
of each value from original array/list in sorted array/list.
I hope there is an efficient function in array level to do the same work.
 >>> from Numeric import *
 >>> a=array([5,2,3])
 >>> argsort(a)
array([1, 2, 0])
 >>> def sortrank(list):
...     n=len(list)
...     li_a=[(i,list[i]) for i in range(n)]
...     li_a.sort(lambda a,b:cmp(a[1],b[1]))
...     li_b=[(i,li_a[i]) for i in range(n)]
...     li_b.sort(lambda a,b:cmp(a[1][0],b[1][0]))
...     return [x[0] for x in li_b]
...    
 >>> sortrank(a)
[2, 0, 1]
 >>> def sortrank2(li):
...     li_sorted=li[:]
...     li_sorted.sort()
...     return [li_sorted.index(x) for x in li]
 >>> sortrank1(list(a))
[2, 0, 1]


Thanks again.

Chunlei

Tim Hochberg wrote:

> CL WU wrote:
>
>> Hi, group,
>>          I am new to numpy. I have 2 questions for array sort.
>>
>> 1. How to sort an array by its one column or one row?
>>    I know python build-in sort() can do it for list by passing own 
>> cmp function. but array function sort() will sort each column or row 
>> seperately,as I know. I don't want to convert array to list to sort 
>> and then convert back to array.
>
>
> I think you want argsort plus take. For example, the following sorts 
> on the second column of a:
>
>     a = array([[4,5,6], [1,2,3], [7,8,9]])
>     arg = argsort(a[:,1])
>     take(a, arg, 0)
>
>> 2. How to get the rank of a rank-0 array? The first "rank" means the 
>> order of each element after sorting, instead of the "dimension" 
>> meaning in numpy.     Just like "rank()" function in splus.
>
>
> If  I understand you correctly, you want argsort as mentioned above.
>
> Regards,
>
> -tim
>
>
>>
>> Thank you
>>
>> Chunlei
>>
>>
>>
>>
>> -------------------------------------------------------
>> This sf.net email is sponsored by:ThinkGeek
>> Welcome to geek heaven.
>> http://thinkgeek.com/sf
>> _______________________________________________
>> Numpy-discussion mailing list
>> Numpy-discussion at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>>
>
>
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>






More information about the Numpy-discussion mailing list