In this tutorial, we will look at how to sort a numpy array by a column with the help of some examples.

**To sort a numpy array by a given column, use the following steps –**

- Get the column index, i. For example, if you want to sort the array by values in the second column, i will be 1 (rows and columns and indexed starting from 0).
- Get the index array of the rows after sorting by the above column using the
`argsort()`

method. - Use the above index array to reorder the rows.

The following is the syntax –

# sort 2d numpy array by the column with index i sorted_arr = arr[arr[:, i].argsort()]

The above code sorts the array by the values in the column with the index `i`

in ascending order. To sort in descending order, reverse the values resulting from the `argsort()`

function.

Let’s now look at some examples of using the above syntax –

## Example 1 – Sort 2d array by a column in ascending order

import numpy as np # create a numpy array arr = np.array([ [1, 7, 1], [2, 5, 0], [3, 9, 0] ]) # sort the above array by the second column, i=1 sorted_arr = sorted_arr = arr[arr[:, 1].argsort()] print(sorted_arr)

Output:

[[2 5 0] [1 7 1] [3 9 0]]

You can see that the resulting array is sorted by the second column in ascending order.

## Example 2 – Sort 2d array by a column in descending order

We can similarly sort a 2d array (by a specific column) in descending order. To do this, reverse the row indices obtained from the `argsort()`

method. This will give the array of row indices when sorted in descending order.

Let’s take the same example as above.

import numpy as np # create a numpy array arr = np.array([ [1, 7, 1], [2, 5, 0], [3, 9, 0] ]) # sort the above array in descending order by the second column, i=1 sorted_arr = sorted_arr = arr[arr[:, 1].argsort()[::-1]] print(sorted_arr)

Output:

[[3 9 0] [1 7 1] [2 5 0]]

The resulting array is sorted in descending order by the second column.

You might also be interested in –

**Subscribe to our newsletter for more informative guides and tutorials. ****We do not spam and you can opt out any time.**