Numpy攻略系列:高级索引机制
所谓高级索引就是不使用整数或者切片作为索引值,在这一节重点介绍三类高级索引:常规的高级索引,位置列表型高级索引,布尔型高级索引的一类。
常规的高级索引
给定一个矩阵,我们要求相关位置设置为特殊值,这里我们就假定设置为0,高级索引不用通过一一按位置修改元素值。
我们的任务将对角线上面元素置为0,
索引用了两个列表来代替了位置,实际上是c[list1[0],list2[0]],c[list1[1],list2[2]]……这个高级索引经常用在求解softmax的最大似然函数上面,可以参考Deep learning tutorials中的logistic regression中NLL求法
Task:将lena图像对角线上的值置零操作。
步骤:将左上到右下的对角线数值置零:
lena[range(xmax),range(ymax)]=0
将左下到右上的对角线数值置零:
lena[range(xmax-1,-1,-1),range(ymax)]=0
code:
运行结果: