《Python数据分析》一2.8 花式索引

    xiaoxiao2024-01-03  156

    本节书摘来自异步社区《Python数据分析》一书中的第2章,第2.8节,作者【印尼】Ivan Idris,更多章节内容可以访问云栖社区“异步社区”公众号查看

    2.8 花式索引

    花式索引是一种传统的索引方法,它不使用整数或者切片。这里,我们将利用花式索引把莱娜照片对角线上的值全部置0,相当于沿着两条交叉的对角线画两条黑线。

    为节约版面,下面代码中的注释已经删除,完整的代码请参考本书代码包中的fancy.py文件:

    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()

    下面对上述代码进行简单说明。

    1.将第一条对角线上的值设为0。

    为了给对角线上的值置0,需要给x和y值(直角坐标系中的坐标)规定两个不同的范围:

    lena[range(xmax), range(ymax)] = 0

    2.将另一条对角线上的值设为0。

    要设置另一条对角线上的值,需要规定两个不同的取值范围,但是规则不变:

    lena[range(xmax-1,-1,-1), range(ymax)] = 0

    划掉相片对角线后,最后得到图2-5所示的效果。

    我们给x和y规定了不同的取值范围,这些范围用来索引莱娜数组。花式索引是在一个内部的NumPy迭代器对象的基础上实现的,分3步完成。

    (1)创建迭代器对象。

    (2)将迭代器对象绑定到数组。

    (3)经由迭代器访问数组元素,利用位置列表进行索引。

    相关资源:2018_1G1-源码
    最新回复(0)