首页技术文章正文

怎样使用花式索引或布尔索引访问元素?

更新时间:2022-04-06 来源:黑马程序员 浏览量:

除了整数索引之外,numpy 中还提供了两个形式比较复杂的索引——花式索引和布尔索引,下面对这两种索引的基本用法进行详细的讲解。

1.花式索引

花式索引指以整数组成的数组或列表为索引。当使用花式索引访问一维数组时,程序会将花式索引对应的数组或列表的元素作为索引,依次根据各个索引获取对应位置的元素,并将这些元素以数组的形式返回 ;当使用花式索引访问二维数组时,程序会将花式索引对应的数组或列表的元素作为索引,依次根据各个索引获取对应位置的一行元素,并将这些行元素以数组的形式返回。接下来,创建一个一维数组,使用花式索引获取该数组的多个元素,代码如下。

In []:   import numpy as npa
         rray_1d = np.arange(1, 10) 
         print(array_1d)
         print("------------")
         # 访问索引为[2,5,8]的元素
         print(array_1d[[2, 5, 8]])
Out []:  [1 2 3 4 5 6 7 8 9]
         ------------
         [3 6 9]

以上代码首先创建了一个一维数组 array_1d,然后使用花式索引 [2,5,8] 访问了该数组,依次返回索引为 2、5、8 的数据。由输出结果可知,程序返回了一个包含 3 个元素的数组。

接下来,创建一个二维数组,使用花式索引获取该数组的多行元素,代码如下。

In []:   array_2d = np.arange(1, 10).reshape((3, 3)) 
         print(array_2d)
         # 访问索引为[0,2]的元素
         print(array_2d[[0, 2]])
Out []:  [[1 2 3]
         [4 5 6]
         [7 8 9]]
         ------------
         [[1 2 3]
         [7 8 9]]

需要说明的是,在使用两个花式索引,即通过“二维数组 [ 花式索引 , 花式索引 ]”的形式访问数组时,会将第一个花式索引对应数组或列表的各元素作为行索引,将第二个花式索引对应数组或列表的各元素作为列索引,再按照“二维数组 [ 行索引 , 列索引 ]”的形式获取对应位置的元素。例如,使用两个花式索引访问二维数组 array_2d 的元素,代码如下。

In []:   # 使用两个花式索引访问元素
         print(array_2d[[0, 2], [1, 1]])
Out []:  [2 8]

上述与二维数组相关的花式索引操作的示意如图:

花式索引

2.布尔索引

布尔索引指以布尔值组成的数组或列表为索引。当使用布尔索引访问数组时,程序会将布尔索引对应的数组或列表的元素作为索引,以获取索引为 True 时对应位置的元素。接下来,创建一个二维数组,获取该数组中值大于 5 的元素,代码如下。

In  []:   array_2d = np.arange(1, 10).reshape((3, 3))    
          print(array_2d)
          print("------------")
          # 使用布尔索引访问元素
          print(array_2d > 5)
          print("------------")
          print(array_2d[array_2d > 5])
Out  []:  [[1 2 3] 
           [4 5 6] 
           [7 8 9]]
          ------------
          [[False False False] 
           [False False  True] 
           [ True  True  True]]
          ------------
          [6 7 8 9]

从输出结果可以看出,程序返回了数组中与布尔数组 True 对应的元素。上述二维数组相关的布尔索引操作的示意如图 2-4 所示。

布尔索引




猜你喜欢:

数据库索引是什么意思?

索引有什么作用?MongoDB中索引有几种类型?

MySQL常用图形管理工具有哪些?

Python培训:使用boxplot()绘制箱形图

黑马程序员Python+大数据开发培训

分享到:
在线咨询 我要报名
和我们在线交谈!