Indexing functions
Truth value functions
np.all(arr) checks whether all elements in arr are True.
np.any(arr) checks whether at least one element in arr is True.
Note: NaN, positive and negative infinity are considered True because they are non-zero.
print(np.all(np.array([True, True, True]))) ## True
print(np.all(np.array([True, True, False]))) ## False
print(np.any(np.array([True, False, False]))) ## True
print(np.any(np.array([False, False, False]))) ## False
For multidimensional arrays, you can also check across a specific axis.
x = np.array([[True, True, False, False], [True, False, True, False]])
print(np.all(x, axis=0)) ## [ True False False False]
print(np.any(x, axis=0)) ## [ True True True False]
print(np.all(x, axis=1)) ## [False False]
print(np.any(x, axis=1)) ## [True True]
Searching functions
np.nonzero() returns the indices of all elements that are not zero (or not False).
x = np.array([[0,2,2], [0,3,0]])
print(np.nonzero(x)) ## (array([0, 0, 1]), array([1, 2, 1]))
print(x[np.nonzero(x)]) ## [2 2 3]

Unique
To find a set of unique elements in an array, use (you guessed it!) np.unique().
x = np.array([12, 15, 13, 15, 16, 17, 13, 13, 18, 13, 19, 18, 11, 16, 15])
print(np.unique(x))
## [11 12 13 15 16 17 18 19]
You can also return the index of the first occurrence of each of the unique elements in the array. For example, the number 11 is first encountered at index 12.
(unique_x, unique_indices) = np.unique(x, return_index=True)
print(unique_x)
## [11 12 13 15 16 17 18 19]
print(unique_indices)
## [12 0 2 1 4 5 8 10]
You can also count the number of times each unique element occurs in the array.
(unique_x, unique_counts) = np.unique(x, return_counts=True)
print(unique_x)
## [11 12 13 15 16 17 18 19]
print(unique_counts)
## [1 1 4 3 2 1 2 1]
Sorting functions
You can sort an array using np.sort().
You can also sort across rows or columns by specifying the axis.
a = np.array([3, 1, 2])
print(np.sort(a)) ## [1 2 3]
b = np.array([[6, 4], [1, 0], [2, 7]])
# Sort rows
print(np.sort(b, axis=0))
## [[1 0]
## [2 4]
## [6 7]]
# Sort columns
print(np.sort(b, axis=1))
## [[4 6]
## [0 1]
## [2 7]]
To get the indices after a sort, use np.argsort().
print(np.argsort(a)) ## [1 2 0]
# Get indices of rows after sorting
print(np.argsort(b, axis=0))
## [[1 1]
## [2 0]
## [0 2]]
# Get indices of columns after sortig
print(np.argsort(b, axis=1))
## [[1 0]
## [1 0]
## [0 1]]
Diagonals
If you need to obtain the diagonal of an array, you might find the np.diagonal(arr) function or arr.diagonal() method useful.
x = np.array([[10, 4, 2], [6, 9, 3], [1, 5, 8]])
print(x.diagonal()) ## [10 9 8]
print(x.diagonal(offset=1)) ## [4 3]
print(x.diagonal(offset=-1)) ## [6 5]