首页技术文章正文

Python培训:代码编程教学入门——整数索引和切片的基本使用

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

  ndarray对象的元素可以通过索引和切片来访问和修改,就像Python内置的容器对象一样。下面是一个一维数组,从表面上来看,该数组使用索引和切片的方式与Python列表的功能相差不大,具体代码如下。

In [53]: import numpy as np
In [54]: arr=np.arange(8)          # 创建一个一维数组
In [55]: arr
Out[55]: array([0, 1, 2, 3, 4, 5, 6, 7])
In [56]: arr[5]                          # 获取索引为5的元素
Out[56]: 5
In [57]: arr[3:5]                        # 获取索引为3~5的元素,但不包括5
In [58]: arr[1:6:2]                      # 获取索引为1~6的元素,步长为2
Out[58]: array([1, 3, 5])

  不过,对于多维数组来说,索引和切片的使用方式与列表就不大一样了。在二维数组中,每个索引位置上的元素不再是一个标量了,而是一个一维数组,具体示例代码如下。

In [59]: import numpy as np
In [60]: arr2d=np.array([1, 2, 3],[4,5,6],[7,8,9]) # 创建二维数组
In [61]: arr2d
Out[61]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
In [62]: arr2d[1]                         # 获取索引为1的元素
Out[62]: array([4, 5, 6])

  此时,如果我们想通过索引的方式来获取二维数组的单个元素,就需要通过形如“arr[x,y]”,以逗号分隔的索引来实现。其中,x表示行号,y表示列号。示例代码如下。

In [63]: arr2d[0, 1]                      # 获取位于第0行第1列的元素
Out[63]: 2

  接下来,通过一张图来描述数组arr2d的索引方式,如图2-3所示。从图2-3中可以看出,arr2d是一个3行3列的数组,如果我们想获取数组的单个元素,必须同时指定这个元素的行索引和列索引。例如,获取索引位置为第1行第1列的元素,我们可以通过arr2d[1,1]来实现。

  相比一维数组,多维数组的切片方式花样更多,多维数组的切片是沿着行与列的方向选取元素的,我们可以传入一个切片,也可以传入多个切片,还可以将切片与整数索引混合使用。

1662344942288_arr2d的索引方式.jpg

  图2-3 arr2d的索引方式

  传入一个切片的示例代码:

In [64]: arr2d[:2]
Out[64]:
array([[1, 2, 3],
       [4, 5, 6]])

  传入两个切片的示例代码:

In [65]: arr2d[0:2, 0:2]
Out[65]:
array([[1, 2],
       [4, 5]])

  切片与整数索引混合使用的示例代码:

In [66]: arr2d[1, :2]
Out[66]: array([4, 5])

  上述多维数组切片操作的相关示意图,如图2-4所示。

1662344971401_多维数组切片图示.jpg

  图2-4 多维数组切片图示

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