Fancy indexing is indexing that does not involve integers or slices, which is conventional indexing. In this tutorial, we will practice fancy indexing to set the diagonal values of the Lena photo to 0
. This will draw black lines along the diagonals, crossing through them.
The following is the code for this tutorial with comments taken away. The full code is in fancy.py
of this book's code bundle:
import scipy.misc import matplotlib.pyplot as plt lena = scipy.misc.lena() xmax = lena.shape[0] ymax = lena.shape[1] lena[range(xmax), range(ymax)] = 0 lena[range(xmax-1,-1,-1), range(ymax)] = 0 plt.imshow(lena) plt.show()
The following is a brief explanation of the preceding code:
0
.To set the diagonal values to 0
, we need to specify two different ranges for the x and y values (coordinates in a Cartesian coordinate system):
lena[range(xmax), range(ymax)] = 0
0
.To set the values of the other diagonal, we need a different set of ranges, but the rules remain the same:
lena[range(xmax-1,-1,-1), range(ymax)] = 0
At the final stage, we produce the following picture with the diagonals crossed out:
We specified different ranges for the x values and y values. These ranges were used to index the Lena array. Fancy indexing is done based on an internal NumPy iterator object. The following three steps are performed:
18.188.61.81