**NumPy**

*chevron_left*

**Cookbooks**

# Sorting value of one array according to another in Python

*schedule*Aug 11, 2023

*toc*Table of Contents

*expand_more*

**mathematics behind data science**with 100+ top-tier guides

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.