Mastering NumPy Array Sorting | A Comprehensive Tutorial 13
NumPy array sorting is a powerful library for scientific computing in Python. It provides a wide range of features for working with arrays and matrices, including fast array operations, linear algebra, Fourier transforms, and much more. One of the most commonly used operations in NumPy is array sorting. In this article, we’ll explore how to sort NumPy arrays and some of the different options available.
NumPy Arrays Sorting
Sorting an array means arranging its elements in a particular order. NumPy provides several functions for sorting arrays, including sort(), argsort(), and lexsort(). The simplest of these is sort(), which sorts the array in place. Here’s an example:
import numpy as np a = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3]) np.sort(a) print(a)
In this example, we create an array of 10 integers and then use the sort() function to sort it in ascending order. The output of this code will be:
[1 1 2 3 3 4 5 5 6 9]
As you can see, the elements in the array have been rearranged so that they are in ascending order. The original array, a, has been modified in place.
NumPy Array Sorting a 2D Array
NumPy Array Sorting a 2D array is slightly more complex, as you need to specify which axis you want to sort along. The axis parameter determines the axis along which the sorting should be performed. By default, sort() sorts along the last axis (i.e., axis=-1). Here’s an example:
b = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]]) np.sort(b, axis=0) print(b)
In this example, we create a 2D array with 3 rows and 3 columns, and then use the sort() function to sort it along the first axis (i.e., axis=0). The output of this code will be:
[[3 1 4] [1 5 9] [2 6 5]]
As you can see, the original array b has not been modified. Instead, a new sorted array has been returned.
NumPy Array Sorting with argsort()
The argsort() function returns an array of indices that would sort the input array. This can be useful if you need to sort an array and also keep track of the original indices. Here’s an example:
c = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3]) idx = np.argsort(c) print(idx) print(c[idx])
In this example, we create an array of 10 integers and then use the argsort() function to obtain the indices that would sort the array in ascending order. We then use these indices to print the sorted array. The output of this code will be:
[1 3 6 0 9 2 4 8 7 5] [1 1 2 3 3 4 5 5 6 9]
As you can see, the indices have been rearranged so that they correspond to the sorted array. The original array, c, has not been modified.
NumPy Array Sorting with lexsort()
The lexsort() function is a more general sorting function that can be used to sort arrays based on multiple keys. It works by sorting arrays in a “lexicographical” order, meaning that it sorts based on multiple criteria in sequence. Here’s an example:
d = np.array([['apple', 3], ['banana', 2], ['pear', 1], ['banana', 4], ['apple', 1]]) idx = np.lexsort((d[:, 1], d[:, 0])) print(d[idx])
In this example, we create a 2D array with two columns. The first column contains fruit names and the second column contains the number of pieces of fruit. We then use the lexsort() function to sort the array first by the number of pieces of fruit and then by the fruit name. The output of this code will be:
[['pear' '1'] ['apple' '1'] ['banana' '2'] ['apple' '3'] ['banana' '4']]
As you can see, the array has been sorted first by the number of pieces of fruit (in ascending order) and then by the fruit name (in alphabetical order). If two elements have the same value for the first sorting key, then they are sorted based on the second key, and so on.
Conclusion
In conclusion, NumPy array sorting is a common operation in NumPy and is essential for many scientific computing tasks. NumPy provides several functions for sorting arrays, including sort(), argsort(), and lexsort(). These functions are powerful and flexible, allowing you to sort arrays in a variety of different ways.
Understanding how to sort NumPy arrays is an important skill for any Python programmer working in scientific computing.