Do you want to sort an array in descending order? In this Python tutorial, I will explain what the **np.argsort() function** is, and how to use **np.argsort in descending order in Python** with some illustrative examples.

**To use np.argsort in descending order in Python, first apply np.argsort to our array, and then either invert the result using array slicing ([::-1]) or negate the array before sorting. For inverting, sort the array using np.argsort and then reverse the resulting indices. For negating, apply np.argsort to the negated array (-arr) to get the indices in descending order.**

## NumPy argsort in Python

NumPy **np.argsort function in Python** is an efficient way to obtain the indices of an array that result in a sorted order. This is particularly useful in situations where we want to sort an array but also need to track the original positions of elements.

**Syntax:**

```
numpy.argsort(arr, axis=-1, kind=None, order=None)
```

Here,

arr | Python array need to be sorted. |

axis | The axis along which to sort. If -1, the Python array is flattened before sorting. |

kind | Specifies the sorting algorithm (‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’). |

order | If arr is an array in Python of structured data types, this argument specifies the field to compare. |

**np.argsort() function in Python**.

**Return value:**

When we apply **np.argsort()** in Python to an array, it computes the indices of the array’s elements in sorted order. However, it’s important to note that it does not change the original array.

Instead, it provides a way to access the elements in the order that would sort the array in Python.

By default, the **np.argsort()** function in Python, sorts in ascending order. The first index in the returned array refers to the smallest item, the second index to the second smallest item, and so on.

**Example:** Let’s consider an example where we have an array of numbers and we want to sort it in ascending order using **np.argsort()** in Python.

This function doesn’t directly sort the array; instead, it returns the indices of the array in the order they would be if the array were sorted

```
import numpy as np
arr = np.array([10, 5, 8, 1, 7])
sorted_indices = np.argsort(arr)
print("Indices that would sort the array:", sorted_indices)
sorted_arr = arr[sorted_indices]
print("Sorted array:", sorted_arr)
```

**Output:**

```
Indices that would sort the array: [3 1 4 2 0]
Sorted array: [ 1 5 7 8 10]
```

After implementing the code in the Pycharm editor, the screenshot is mentioned below.

## How to use np.argsort in Descending order in Python

While np.argsort in Python naturally sorts in ascending order, there are two ways to use np.argsort in Descending order in Python:

- Inverting the Result.
- Negating the Array

Let’s see them one by one with the example:

### 1. np.argsort descending in Python by inverting the result

After applying np.argsort, invert the order of the result. This can be done by using array slicing. For instance:

```
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2])
ascending_order_indices = np.argsort(arr)
descending_order_indices = ascending_order_indices[::-1]
arr_descending_order = arr[descending_order_indices]
print(arr_descending_order)
```

**Output:** Here, [::-1] reverses the array in Python, turning the ascending order into descending order.

`[9 5 4 3 2 1 1]`

A screenshot is mentioned below, after implementing the code in the Pycharm editor.

### 2. NumPy argsort descending by negating the array

Another approach is to negate the array values if the array consists of numeric data in Python. This way, the largest negative value (which is the smallest positive value) gets sorted first. This way we use np.argsort in Descending order in Python For example:

```
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2])
descending_order_indices = np.argsort(-arr)
arr_descending_order = arr[descending_order_indices]
print(arr_descending_order)
```

**Output:** By negating arr, **np.argsort in Python** sorts as if it were sorted in descending order.

`[9 5 4 3 2 1 1]`

After executing the code in Pycharm, one can see the output in the below screenshot.

## Conclusion

In this article, I have explained what the **np.argsort() function** is, and how to use **np.argsort in descending order in Python** with inverting the result and negating the array with examples. These techniques offer a straightforward and versatile approach to descending order sorting, extending the utility of **np.argsort** beyond its default ascending order functionality.

You may also like to read:

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.