You can use the following methods to sort the rows of a NumPy array by column values:
Method 1: Sort by Column Values Ascending
x_sorted_asc = x[x[:, 1].argsort()]
Method 2: Sort by Column Values Descending
x_sorted_desc = x[x[:, 1].argsort()[::-1]]
The following examples show how to use each method in practice.
Example 1: Sort Numpy Array by Column Values Ascending
Suppose we have the following NumPy array:
import numpy as np #create array x = np.array([14, 12, 8, 10, 5, 7, 11, 9, 2]).reshape(3,3) #view array print(x) [[14 12 8] [10 5 7] [11 9 2]]
We can use the following code to sort the rows of the NumPy array in ascending order based on the values in the second column:
#define new matrix with rows sorted in ascending order by values in second column
x_sorted_asc = x[x[:, 1].argsort()]
#view sorted matrix
print(x_sorted_asc)
[[10 5 7]
[11 9 2]
[14 12 8]]
Notice that the rows are now sorted in ascending order (smallest to largest) based on the values in the second column.
Example 2: Sort Numpy Array by Column Values Descending
Suppose we have the following NumPy array:
import numpy as np #create array x = np.array([14, 12, 8, 10, 5, 7, 11, 9, 2]).reshape(3,3) #view array print(x) [[14 12 8] [10 5 7] [11 9 2]]
We can use the following code to sort the rows of the NumPy array in descending order based on the values in the second column:
#define new matrix with rows sorted in descending order by values in second column
x_sorted_desc = x[x[:, 1].argsort()[::-1]]
#view sorted matrix
print(x_sorted_desc)
[[14 12 8]
[11 9 2]
[10 5 7]]
Notice that the rows are now sorted in descending order (largest to smallest) based on the values in the second column.
Additional Resources
The following tutorials explain how to perform other common operations in Python:
How to Find Index of Value in NumPy Array
How to Get Specific Column from NumPy Array
How to Add a Column to a NumPy Array