官术网_书友最值得收藏!

Fancy indexing

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 example:

import scipy.misc 
import matplotlib.pyplot as plt 
 
face = scipy.misc.face() 
xmax = face.shape[0] 
ymax = face.shape[1] 
face=face[:min(xmax,ymax),:min(xmax,ymax)] 
xmax = face.shape[0] 
ymax = face.shape[1] 
face[range(xmax), range(ymax)] = 0 
face[range(xmax-1,-1,-1), range(ymax)] = 0 
plt.imshow(face) 
plt.show() 

The following is a brief explanation of the preceding code:

  1. Set the values of the first diagonal to 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):

            face[range(xmax), range(ymax)] = 0 
    
  2. Set the values of the other diagonal to 0.

    To set the values of the other diagonal, we need a different set of ranges, but the rules remain the same:

              face[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:

  1. The iterator object is created.
  2. The iterator object gets bound to the array.
  3. Array elements are accessed via the iterator.
主站蜘蛛池模板: 普兰县| 南靖县| 陇西县| 藁城市| 凤凰县| 大化| 桃源县| 伊春市| 元阳县| 富民县| 玉环县| 屏边| 正蓝旗| 巴林左旗| 兖州市| 福海县| 沙田区| 新乡县| 绵竹市| 西宁市| 海伦市| 绍兴县| 广汉市| 麻城市| 潜江市| 石嘴山市| 深水埗区| 神农架林区| 滦南县| 梧州市| 彰武县| 绿春县| 昌乐县| 县级市| 龙川县| 商都县| 五家渠市| 奉节县| 南宫市| 灌南县| 盐山县|