Soring, searching, and counting


In [1]:
import numpy as np

In [2]:
np.__version__


Out[2]:
'1.11.2'

In [3]:
author = 'kyubyong. longinglove@nate.com'

Sorting

Q1. Sort x along the second axis.


In [11]:
x = 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).


In [13]:
surnames =    ('Hertz',    'Galilei', 'Hertz')
first_names = ('Heinrich', 'Galileo', 'Gustav')


[1 2 0]

Q3. Get the indices that would sort x along the second axis.


In [17]:
x = 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.


In [48]:
x = np.random.permutation(10)
print "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.


In [56]:
x = np.random.permutation(10)
print "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.


In [78]:
x = np.random.permutation(10).reshape(2, 5)
print "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.


In [79]:
x = 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.


In [113]:
x = 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.


In [100]:
x = 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.


In [105]:
x = 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.


In [109]:
x = [1, 3, 5, 7, 9]
y = [0, 4, 2, 6]


Out[109]:
array([0, 2, 1, 3], dtype=int64)

Counting

Q12. Get the number of nonzero elements in x.


In [120]:
x = [[0,1,7,0,0],[3,0,0,2,19]]


5

In [ ]: