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.

- 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)`

- 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@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@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/numpy-discussion