本章将使用高级索引技术,把图像Lena对角线位置上的数值置零,其效果就是在图像上画出两条交叉的蓝色(或者是黑色)对角线。给图像画叉没什么特别的意思,只是练习的需要。与常规索引不同的是,高级索引不使用整数或切片作为索引值。
具体步骤
从画第一条对角线开始,步骤如下:
- 把第一条对角线位置上的数值置零。
为了能把对角线上的值置零,需要把数组的两个索引值x
和y
定义为不同的整数列表:
- 把另一条对角线位置上的数值置零。
为了能把另一条对角线上的值置零,需要定义另外一对整数列表,但基本原理是一样的:
在最终得到的图像上,可以看到两条交叉的对角线,如下图所示。
本攻略的完整代码如下。
小结
我们把数组的索引值x
和y
分别定义为单独的整数列表。这两个整数列表被用作数组Lena
的索引。高级索引的实现基于一个内部的NumPy迭代器对象,具体执行过程包括三个步骤。
-
创建迭代器对象。
-
把迭代器对象绑定到数组。
-
通过迭代器访问数组元素。