Re: [Numpy-discussion] Sorting of an array row-by-row?

2017-10-20 Thread Charles R Harris
On Fri, Oct 20, 2017 at 1:40 PM, Joseph Fox-Rabinovitz < jfoxrabinov...@gmail.com> wrote: > I do not think that there is any particular relationship between the > order of the keys and lexicographic order. The key order is just a > convention, which is clearly documented. I agree that it is a bit

Re: [Numpy-discussion] Sorting of an array row-by-row?

2017-10-20 Thread Joseph Fox-Rabinovitz
I do not think that there is any particular relationship between the order of the keys and lexicographic order. The key order is just a convention, which is clearly documented. I agree that it is a bit counter-intuitive for anyone that has used excel or MATLAB, but it is ingrained in the API at

Re: [Numpy-discussion] Sorting of an array row-by-row?

2017-10-20 Thread Kirill Balunov
Thank you Josef, you gave me an idea, and now the fastest version (for big arrays) on my laptop is: np.lexsort(arr[:, ::-1].T) For me the most strange thing is the order of keys, what was an idea to keep then right-to-left? How does this relate to lexicographic order*?* 2017-10-20 17:11

Re: [Numpy-discussion] Sorting of an array row-by-row?

2017-10-20 Thread Joseph Fox-Rabinovitz
There are two mistakes in your PS. The immediate error comes from the fact that lexsort accepts an iterable of 1D arrays, so when you pass in arr as the argument, it is treated as an iterable over the rows, each of which is 1D. 1D arrays do not have an axis=1. You actually want to iterate over the

[Numpy-discussion] Sorting of an array row-by-row?

2017-10-20 Thread Kirill Balunov
Hi, I was trying to sort an array (N, 3) by rows, and firstly come with this solution: N = 100 arr = np.random.randint(-100, 100, size=(N, 3)) dt = np.dtype([('x', int),('y', int),('z', int)]) *arr.view(dtype=dt).sort(axis=0)* Then I found another way using lexsort function *:* *idx =