Chapter 11. Sorting Arrays
Up to this point we have been concerned mainly with tools to access and operate on array data with NumPy. This chapter covers algorithms related to sorting values in NumPy arrays. These algorithms are a favorite topic in introductory computer science courses: if you’ve ever taken one, you probably have had dreams (or, depending on your temperament, nightmares) about insertion sorts, selection sorts, merge sorts, quick sorts, bubble sorts, and many, many more. All are means of accomplishing a similar task: sorting the values in a list or array.
Python has a couple of built-in functions and methods for sorting lists
and other iterable objects. The sorted
function accepts a list and
returns a sorted version of it:
In
[
1
]:
L
=
[
3
,
1
,
4
,
1
,
5
,
9
,
2
,
6
]
sorted
(
L
)
# returns a sorted copy
Out
[
1
]:
[
1
,
1
,
2
,
3
,
4
,
5
,
6
,
9
]
By contrast, the sort
method of lists will sort the list in-place:
In
[
2
]:
L
.
sort
()
# acts in-place and returns None
(
L
)
Out
[
2
]:
[
1
,
1
,
2
,
3
,
4
,
5
,
6
,
9
]
Python’s sorting methods are quite flexible, and can handle any iterable object. For example, here we sort a string:
In
[
3
]:
sorted
(
'python'
)
Out
[
3
]:
[
'h'
,
'n'
,
'o'
,
'p'
,
't'
,
'y'
]
These built-in sorting methods are convenient, but as previously discussed, the dynamism of Python values means that they are less performant than routines designed specifically for uniform arrays of numbers. This is where NumPy’s sorting routines come in.
Fast Sorting in NumPy: np.sort and np.argsort
The ...
Get Python Data Science Handbook, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.