How to get indices of a sorted array in Python How to get indices of a sorted array in Python python python

How to get indices of a sorted array in Python


If you are using numpy, you have the argsort() function available:

>>> import numpy>>> numpy.argsort(myList)array([0, 1, 2, 4, 3])

http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html

This returns the arguments that would sort the array or list.


Something like next:

>>> myList = [1, 2, 3, 100, 5]>>> [i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])][0, 1, 2, 4, 3]

enumerate(myList) gives you a list containing tuples of (index, value):

[(0, 1), (1, 2), (2, 3), (3, 100), (4, 5)]

You sort the list by passing it to sorted and specifying a function to extract the sort key (the second element of each tuple; that's what the lambda is for. Finally, the original index of each sorted element is extracted using the [i[0] for i in ...] list comprehension.


myList = [1, 2, 3, 100, 5]    sorted(range(len(myList)),key=myList.__getitem__)[0, 1, 2, 4, 3]