12 Sorting Searching And Counting
title: "Soring, searching, and counting" date: 2026-05-24T13:51:10Z
Soring, searching, and counting
1import numpy as np
1np.__version__
'1.11.2'
1author = 'kyubyong. longinglove@nate.com'
Sorting
Q1. Sort x along the second axis.
1x = np.array([[1,4],[3,1]])
[[1 4]
[1 3]]
Q2. Sort pairs of surnames and first names and return their indices. (first by surname, then by name).
1surnames = ('Hertz', 'Galilei', 'Hertz')
2first_names = ('Heinrich', 'Galileo', 'Gustav')
[1 2 0]
Q3. Get the indices that would sort x along the second axis.
1x = np.array([[1,4],[3,1]])
[[0 1]
[1 0]]
Q4. Create an array such that its fifth element would be the same as the element of sorted x, and it divide other elements by their value.
1x = np.random.permutation(10)
2print "x =", x
x = [5 1 6 3 9 8 2 7 4 0]
Check the fifth element of this new array is 5, the first four elements are all smaller than 5, and 6th through the end are bigger than 5
[2 0 4 3 1 5 8 7 6 9]
Q5. Create the indices of an array such that its third element would be the same as the element of sorted x, and it divide other elements by their value.
1x = np.random.permutation(10)
2print "x =", x
x = [2 8 3 7 5 6 4 0 9 1]
partitioned = [0 1 2 3 4 5 8 6 9 7]
indices = [0 1 2 3 4 5 8 6 9 7]
Searching
Q6. Get the maximum and minimum values and their indices of x along the second axis.
1x = np.random.permutation(10).reshape(2, 5)
2print "x =", x
x = [[0 5 9 8 2]
[3 7 4 1 6]]
maximum values = [9 7]
max indices = [2 1]
minimum values = [0 1]
min indices = [0 3]
Q7. Get the maximum and minimum values and their indices of x along the second axis, ignoring NaNs.
1x = np.array([[np.nan, 4], [3, 2]])
maximum values ignoring NaNs = [ 4. 3.]
max indices = [1 0]
minimum values ignoring NaNs = [ 4. 2.]
min indices = [1 1]
Q8. Get the values and indices of the elements that are bigger than 2 in x.
1x = np.array([[1, 2, 3], [1, 3, 5]])
Values bigger than 2 = [3 3 5]
Their indices are (array([0, 1, 1], dtype=int64), array([2, 1, 2], dtype=int64))
Q9. Get the indices of the elements that are bigger than 2 in the flattend x.
1x = np.array([[1, 2, 3], [1, 3, 5]])
[0 1 2 3 4 5]
Q10. Check the elements of x and return 0 if it is less than 0, otherwise the element itself.
1x = np.arange(-5, 4).reshape(3, 3)
[[0 0 0]
[0 0 0]
[1 2 3]]
Q11. Get the indices where elements of y should be inserted to x to maintain order.
1x = [1, 3, 5, 7, 9]
2y = [0, 4, 2, 6]
array([0, 2, 1, 3], dtype=int64)
Counting
Q12. Get the number of nonzero elements in x.
1x = [[0,1,7,0,0],[3,0,0,2,19]]
5