Python NumPy 高级索引——整数组索引、布尔索引及花式索引

NumPy 除了之前文章中介绍的用整数和切片的索引外,数组还可以由整数数组索引、布尔索引及花式索引。

整数数组索引

整数索引有助于基于 N 维索引来获取数组中任意元素。每个整数数组表示该维度的下标值。当索引的元素个数就是目标 ndarray 的维度时,会变得相当直接。以下示例获取了 ndarray 对象中每一行指定列的一个元素。因此,行索引包含所有行 ,列索引指定要选择的元素。

以下实例获取数组中 (0, 0) 、(1, 1) 、(2, 2)位置处的元素。

也可以利用数字索引生成同样维度的数组,如下获取数组中 (0, 0) 、(0, 2) 、(2, 0)、(2, 2)位置处的元素。


布尔索引

我们可以通过一个布尔数组来索引目标数组,以此找出与布尔数组中值为True的对应的目标数组中的数据。需要注意的是,布尔数组的长度必须与目标数组对应的轴的长度一致。

如下,查看数组中大于5的元素。

如下,将数组中大于5的元素索引出来。

此外,通过布尔型数组设置值是一种常用的方式,如下,将数组大于5的值设置为5。

需要注意,Python的关键字and和or在布尔型数组中无效。


花式索引

花式索引指的是利用整数数组进行索引。

花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行。

花式索引它总是将数据复制到新数组中,如下。

对于使用两个整型数组作为索引的时候,那么结果是按照顺序取出对应轴的对应下标的值。需要注意,这两个整型数组的shape应该一致,或者其中一个数组应该是长度为1的一维数组。例如,以[2, 1],[0, 2]这两个整型数组作为索引,那么对于二维数组,则取出(2, 0)、(1, 2)这些坐标对应的元素。

如果要得到矩形区域的话,利用np.ix_函数,它可以将两个一维的整数数组转化为方形区域的索引器,如下。


声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月5日
下一篇 2019年7月5日

相关推荐