购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4
访问数组

访问数组元素是指通过索引或切片操作获取数组中特定位置的值。在NumPy中,可以使用不同的方式访问数组元素,包括基本索引、切片操作和花式索引。

2.4.1 索引访问

1.一维数组索引访问

NumPy一维数组索引访问与Python内置序列索引访问一样,使用中括号+下标([index])。

图2-6 一维数组索引

图2-6所示的是数组a的索引,索引分为正向索引和反向索引。

(1)正向索引:正向索引是从数组的起始位置开始的索引。它从0开始,并按照递增顺序指定元素的位置。例如,a[0]表示数组的第一个元素,a[1]表示数组的第二个元素,以此类推。

(2)反向索引:反向索引是从数组的末尾位置开始的索引。它从-1开始,并按照递减顺序指定元素的位置。例如,a[-1]表示数组的最后一个元素,a[-2]表示数组的倒数第二个元素,以此类推。

一维数组索引访问的示例代码如下。

示例代码运行后,输出结果如下。

2.二维数组索引访问

多维数组索引访问有以下两种表达式。

这两种表达式实际上是等价的,它们都用于按照指定的轴索引来访问多维数组的元素。

下面的示例代码演示了如何使用这两种表达式进行多维数组的索引访问。

在上述示例代码中,我们使用了表达式1和表达式2来访问二维数组中的元素。无论是使用嵌套的索引表达式还是使用逗号分隔的索引表达式,都可以达到相同的结果。请注意,索引值仍然是从0开始计数的。

2.4.2 切片访问

切片是一种在数组中访问连续元素范围的方法。在NumPy中,可以使用切片来访问数组的子集。

1.一维数组切片访问

NumPy一维数组切片操作与Python内置序列切片操作一样。切片运算有以下两种形式。

(1)[start:end]:start是开始索引,end是结束索引。

(2)[start:end:step]:start是开始索引,end是结束索引,step是步长,步长是在切片时获取元素的间隔。步长可以为正整数,也可为负整数。

注意 切片包括start位置元素,但不包括end位置元素,start和end都可以省略。

一维数组切片访问的示例代码如下。

示例代码运行后,输出结果如下。

在上述示例代码中,我们使用切片操作对一维数组进行访问。以下是每个切片的含义。

arr[2:5] 表示从索引“2”到索引“5”之前的元素,即索引2、3、4对应的元素。

arr[:4] 表示从数组的起始位置到索引“4”之前的元素,即索引0、1、2、3对应的元素。

arr[2:] 表示从索引“2”到数组的末尾位置的元素,即索引2、3、4、5对应的元素。

arr[::2] 表示从数组的起始位置到末尾位置,以步长“2”访问元素,即索引0、2、4对应的元素。

arr[::-1] 表示逆序访问整个数组,即反向获取所有元素。

通过使用不同的切片参数,我们可以选择性地访问一维数组中的子集,并以不同的方式进行切片操作。请注意,切片是左闭右开区间,即不包含结束索引对应的元素。

2.二维数组切片访问

二维数组切片访问是指通过切片操作获取二维数组的子集。多维数组切片访问使用逗号分隔的切片表达式来指定每个轴上的切片范围,多维数组切片访问的表达式如下。

二维数组切片访问的示例代码如下。

示例代码运行后,输出结果如下。

在上述示例代码中,我们使用切片操作对二维数组进行多维切片访问。根据切片表达式的位置,我们分别在第0轴和第1轴上进行切片。每个切片表达式都可以包含起始索引、结束索引和步长,以选择性地访问数组的子集。

2.4.3 花式索引

花式索引是一种使用整数列表或整数数组作为索引的方法,用于从数组中选择特定的元素或子集。

使用花式索引的一般步骤如下。

步骤一 创建一个整数列表或整数数组,指定要选择的元素的索引。

步骤二 将整数列表或整数数组作为索引应用于原始数组,以获取相应的元素或子集。

使用花式索引的示例代码如下。

示例代码运行后,输出结果如下。

在上述示例代码中,我们创建了一个整数列表indices,其中包含要选择的元素的索引。然后,我们使用整数列表indices作为索引应用于原始数组arr,从而获取指定位置的元素。在输出结果中,可以看到原始数组、花式索引和选择的元素。

花式索引可以用于一维数组和多维数组,提供了一种灵活的方式来选择数组中的元素或子集。我们可以使用单个整数、整数列表、整数数组或布尔数组作为花式索引来满足不同的选择需求。 4ZsYBsXQEr3HwsqdKJpbnf+ITjvl/MJxy91fR9jzQJyKrWvBIsIPXPJOZU6EQgGe

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开