Sorting value of one array according to another in Python
Start your free 7-days trial now!
To sort the value of one array according to another in Python use the np.argsort(~) method.
Example
Consider the following NumPy arrays:
import numpy as npx = np.array(['A','B','C','D'])y = np.array([4,3,2,1])
Ascending order
To sort array y in ascending order and also sort array x maintaining the pair relationships between elements in the two arrays:
[1 2 3 4]['D' 'C' 'B' 'A']
First we get the integer indices that would result in array y being sorted in ascending order, and store them to variable sort. If we actually printed this variable we would see an array [3 2 1 0]. This means that to obtain an ascending sorted copy of array y, the element at index position 3 should come first, element at index position 2 should come second and so on.
We then take sort and apply it to both y and x. For both arrays we see the printed arrays have the element that was at index position 3 (1 and 'D' respectively) appear first, then have element that was at index position 2 (2 and 'C' respectively) appear next.
Descending order
To sort array x in descending order and also sort array y maintaining the pair relationships between elements in the two arrays:
['D' 'C' 'B' 'A'][1 2 3 4]
Although np.argsort(~) does not natively support descending order, you can leverage negation (~) to implement the functionality. By negating the sort array here, the index position of the highest elements will now come first and lowest elements last.