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