Slicing with boolean vectorsΒΆ
We have already seen how to slice arrays using colons and integers.
The colon means ‘all the elements on this axis’:
>>> an_array = np.array([[0, 1, 2, 3], [4, 5, 6, 7]])
>>> an_array[:, 1] # All rows, only the second column
array([1, 5])
>>> an_array[0, 1:] # Only the first row, all columns except the first
array([1, 2, 3])
We have also seen how to slice using a boolean array the same shape as the original:
>>> is_gt_5 = an_array > 5
>>> is_gt_5
array([[False, False, False, False],
[False, False, True, True]], dtype=bool)
>>> an_array[is_gt_5] # Select elements greater than 5 into 1D array
array([6, 7])
We can also use boolean vectors to select elements on a particular axis. So, for example, let’s say we want the first and last elements on the second axis. We can use a boolean vector to select these elements from a particular axis, while still using integer and colon syntax for the other axes:
>>> want_first_last = np.array([True, False, False, True])
All rows, columns as identified by boolean vector:
>>> an_array[:, want_first_last]
array([[0, 3],
[4, 7]])