NumPy 高级索引,NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。
整数数组索引
实例1:以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。
输出结果为:
实例2:以下实例获取了 4X3 数组中的四个角的元素。 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。
输出结果为:
返回的结果是包含每个角元素的 ndarray 对象。
实例3:可以借助切片 :
或 …
与索引数组组合
输出结果为:
布尔索引
我们可以通过一个布尔数组来索引目标数组。
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。
实例1:以下实例获取大于 5 的元素
输出结果为:
实例2:以下实例使用了 ~(取补运算符)来过滤 NaN。
输出结果为:
实例3:以下实例演示如何从数组中过滤掉非复数元素。
输出如下:
花式索引
花式索引指的是利用整数数组进行索引。
花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行。
花式索引跟切片不一样,它总是将数据复制到新数组中。
实例1:传入顺序索引数组
输出结果为:
实例2:传入倒序索引数组
输出结果为:
实例3:传入多个索引数组(要使用np.ix_)
输出结果为: