Robert,

Argsort doesn't preserve order by default because quicksort is not a stable sort. Try using the kind="merge" option and see what happens. Or try lexsort, which is targeted at just this sort of sort and uses  merge sort. See the documentation here.

http://scipy.org/Numpy_Example_List#head-9f8656795227e3c43e849c6c0435eeeb32afd722

Chuck

PS:  The function argsort doesn't seem to support this  extension in the version I am using (time for another svn update), so you may have to do something like

>>> a = empty(50)
>>> a.argsort(kind="merge")
array([48, 47, 46,  0,  1, 49, 37, 12, 22, 38, 11,  2, 10, 36, 40, 25, 18,
        6, 17,  4,  3, 20, 24, 43, 33,  9,  7, 35, 32,  8, 23, 21,  5, 28,
       31, 30, 29, 26, 27, 19, 44, 13, 14, 15, 34, 39, 41, 42, 16, 45])

On 6/8/06, Robert Cimrman <[EMAIL PROTECTED] > wrote:
Hi all,

I have just lost some time to find a bug related to the fact, that
argsort does not preserve the order of an array that is already sorted,
see the example below. For me, it would be sufficient to mention this
fact in the docstring, although having order preserving argsort is also
an option :). What do the developers think?

In [33]:a = nm.zeros( 10000 )
In [34]:b = nm.arange( 10000 )
In [35]:nm.alltrue( nm.argsort( a ) == b )
Out[35]:False

r.


_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/numpy-discussion

_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/numpy-discussion

Reply via email to