# Mastering NumPy: Sorting Arrays by Column Values

## Sorting NumPy Arrays by Column Values: Methods and Examples

NumPy is the go-to library for scientific computing in Python. It provides tools for working with arrays and matrices, and has a vast array of functionalities for numerical operations.

Suppose you have a NumPy array, and you want to sort it by the values of a specific column. What would you do?

Sort it manually, or use a library like NumPy to achieve that? The answer is simple – use NumPy. This article will show you two methods of sorting NumPy arrays by column values – in ascending and descending order.

We will also provide examples that demonstrate how to create and sort NumPy arrays in Python.

## Creating a NumPy Array

Before we sort a NumPy array, let us quickly create one. There are different ways of creating a NumPy array, but in this article, we will use the `np.array()` method.

### Below is an example of a NumPy array consisting of three rows and four columns:

``````import numpy as np
my_array = np.array([[4, 5, 6, 7], [1, 2, 3, 4], [8, 9, 10, 11]])
print(my_array)
[[ 4  5  6  7]
[ 1  2  3  4]
[ 8  9 10 11]]``````

## Sorting Rows in Ascending Order by Column Values

Now that we have created a NumPy array, we can sort it by a specific column in ascending order. To sort a NumPy array by its columns, we use the `np.argsort()` method in combination with the NumPy array indexing notation.

### Below is an example of how to sort a NumPy array in ascending order by its second column:

``````my_array_sorted = my_array[my_array[:, 1].argsort()]
print(my_array_sorted)
[[1 2 3 4]
[4 5 6 7]
[8 9 10 11]]``````

We can see that the NumPy array is now sorted by its second column in ascending order. The `np.argsort()` method returns the indices that would sort an array.

By using the indices to index the array, we can achieve the desired sort order.

### Method 2: Sorting NumPy Arrays by Column Values in Descending Order

To sort a NumPy array in descending order, we can use the same method as above, but with a small modification.

Instead of using `np.argsort()`, we use `np.argsort()[::-1]`. The `[::-1]` syntax reverses the order of the indices returned by `np.argsort()`.

### Below is an example of how to sort a NumPy array in descending order by its second column:

``````my_array_sorted_desc = my_array[my_array[:, 1].argsort()[::-1]]
print(my_array_sorted_desc)
[[ 8  9 10 11]
[ 4  5  6  7]
[ 1  2  3  4]]``````

We can see that the NumPy array is now sorted by its second column in descending order. By reversing the order of the indices, we achieve the desired sort order.

### Example 1: Sorting NumPy Array by Column Values Ascending

Here is an example that demonstrates a scenario where we would need to sort a NumPy array by column values in ascending order. Suppose we have a dataset of 10 students’ scores in five subjects:

``````import numpy as np
scores = np.array([[60, 70, 90, 80, 75],
[70, 80, 70, 85, 90],
[90, 85, 80, 85, 95],
[85, 75, 85, 70, 60],
[55, 80, 75, 70, 95],
[70, 85, 65, 70, 85],
[80, 90, 95, 90, 85],
[90, 80, 85, 70, 75],
[80, 90, 75, 60, 75],
[65, 70, 75, 80, 85]])
``````

We can sort the scores by the average of each student’s scores in ascending order:

``````scores_sorted = scores[scores.mean(axis=1).argsort()]
``````

### We can then print the sorted scores to see which students have the highest averages:

``````print(scores_sorted)
[[ 60  70  90  80  75]
[ 70  85  65  70  85]
[ 55  80  75  70  95]
[ 85  75  85  70  60]
[ 65  70  75  80  85]
[ 80  90  75  60  75]
[ 90  80  85  70  75]
[ 70  80  70  85  90]
[ 80  90  95  90  85]
[ 90  85  80  85  95]]``````

We can see that the students with the highest averages have been sorted to the bottom of the NumPy array.

## Conclusion

Sorting NumPy arrays by column values is a common operation in data science, and it is essential to know how to do it efficiently. In this article, we have shown you two methods of sorting NumPy arrays by column values – in ascending and descending order – and provided examples that demonstrate how to create and sort NumPy arrays in Python.

By following the steps outlined in this article, you should be able to sort NumPy arrays by column values with ease.

### Example 2: Sorting NumPy Array by Column Values Descending

As we have already seen, sorting a NumPy array by column values in ascending order is a straightforward process.

Similarly, sorting a NumPy array by column values in descending order is just as simple. Let us consider an example to illustrate this process.

## Creating a NumPy Array

To create a NumPy array, we can use the `np.array()` method. Below is an example of a NumPy array consisting of three rows and four columns:

``````import numpy as np
my_array = np.array([[4, 5, 6, 7], [1, 2, 3, 4], [8, 9, 10, 11]])
print(my_array)
[[ 4  5  6  7]
[ 1  2  3  4]
[ 8  9 10 11]]``````

## Sorting Rows in Descending Order by Column Values

To sort the NumPy array in descending order by column values, we use the same approach as for the ascending order, but with a minor modification. We use the `np.argsort()` method in combination with the NumPy array indexing notation, but instead of the ascending order, we invert the sort order using `[::-1]`.

### Below is an example of how to sort a NumPy array in descending order by its second column:

``````my_array_sorted_desc = my_array[my_array[:, 1].argsort()[::-1]]
print(my_array_sorted_desc)
[[ 8  9 10 11]
[ 4  5  6  7]
[ 1  2  3  4]]``````

We can see that the NumPy array is now sorted by its second column in descending order. By reversing the order of the indices using `[::-1]`, we get the desired sort order.

1. NumPy documentation – NumPys official documentation is a comprehensive resource for learning about and working with NumPy arrays.
2. NumPy User Guide – The NumPy user guide is a valuable resource for new and intermediate level users. It provides practical examples and explanations of the core concepts and functionality of NumPy.
3. NumPy Tutorial by SciPy.org – This tutorial series provides a comprehensive introduction to NumPy. It covers array creation, indexing, slicing, broadcasting, and much more.
4. NumPy Illustrated – This book by NumPy creator, Pauli Virtanen, is a great resource for learning NumPy. It includes interactive examples and visualizations that explain the concepts step-by-step.

## Conclusion

Sorting NumPy arrays by column values is a fundamental operation in data science, and it is essential to know how to do it accurately and efficiently. In this article, we have demonstrated how to sort a NumPy array by column values, both in ascending and descending order, using straightforward methods.

We have also provided examples that illustrate the process of creating and sorting NumPy arrays. Finally, we have recommended some additional resources to help you deepen your understanding and proficiency in working with NumPy arrays.

With this knowledge, you should be able to work with NumPy arrays effectively and efficiently in your data science projects.

In conclusion, sorting NumPy arrays by column values in ascending and descending orders is an essential operation in data science, making it crucial to know how to do it accurately and efficiently.

In this article, we have shown how to create and sort NumPy arrays using simple methods and have provided relevant examples for better understanding. We have also recommended additional resources to ensure that readers have access to further reading on NumPy arrays.

NumPy arrays are ubiquitous in science and data analysis, and mastering the operations that come with them can make a significant difference in the quality of your work. With the knowledge gained from this article, readers should be able to work with NumPy arrays effectively and efficiently in their data science projects.