8 NumPy基本操作之数组索引与切片

在上篇中,我们学习了如何创建NumPy数组,如一维数组、二维数组及更高维数组。在这篇文章中,我们将深入探讨如何对NumPy数组进行索引和切片,以有效地操作和访问数组中的数据。

1. 数组索引

数组索引是指通过指定位置来访问数组中的元素。数组的索引是从0开始的,这意味着第一个元素的索引是0,第二个元素的索引是1,以此类推。

1.1 一维数组索引

让我们先来看一个一维数组的例子:

1
2
3
4
import numpy as np

# 创建一维数组
arr = np.array([10, 20, 30, 40, 50])

我们可以通过索引来访问数组中的单个元素:

1
2
print(arr[0])  # 输出: 10
print(arr[2]) # 输出: 30

1.2 二维数组索引

对于二维数组,我们需要使用两个索引值,分别表示行和列:

1
2
3
4
5
6
# 创建二维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 访问元素
print(arr2d[0, 1]) # 输出: 2
print(arr2d[2, 2]) # 输出: 9

注意:使用逗号, 分隔行和列的索引。

2. 数组切片

切片(slicing)是指访问数组的一部分。NumPy数组支持切片操作,这使得可以方便地获取数组的一个子集。

2.1 一维数组切片

让我们继续使用之前创建的一维数组,看看如何切片:

1
2
# 切片获取数组的部分元素
print(arr[1:4]) # 输出: [20 30 40]

在这个例子中,arr[1:4] 表示从索引1开始,到索引4之前(不包括索引4)的所有元素。

2.2 二维数组切片

对于二维数组,切片的语法与一维数组非常类似,但我们可以单独切片每个维度:

1
2
3
# 切片获取二维数组的一部分
print(arr2d[0:2, 1:3]) # 输出: [[2 3]
# [5 6]]

在这个例子中,arr2d[0:2, 1:3] 提取了前两行(第0行和第1行)和第1到第2列(不包括第3列)的元素。

2.3 切片的步长

切片中还可以指定步长。步骤参数的格式为 start:end:step

1
2
# 使用步长切片
print(arr[::2]) # 输出: [10 30 50]

在这里,arr[::2] 选择了从头到尾每隔一个元素。

3. 综合案例

结合数组索引和切片,让我们看一个综合的案例:

假设我们有一个3x3的矩阵,我们希望提取一些特定的行和列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np

# 创建一个3x3的矩阵
matrix = np.array([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])

# 提取第1行和第3行
rows = matrix[[0, 2], :]
print(rows) # 输出: [[10 20 30]
# [70 80 90]]

# 提取第2列
column = matrix[:, 1]
print(column) # 输出: [20 50 80]

# 提取子矩阵
sub_matrix = matrix[0:2, 1:3]
print(sub_matrix) # 输出: [[20 30]
# [50 60]]

在上面的例子中,我们可以看到通过使用数组的索引和切片,能够方便地选取所需的行、列和子矩阵。

结论

本章概述了如何使用NumPy进行数组索引与切片操作。通过合理使用索引和切片,我们可以便捷地访问和操作数组元素,为后续的数据处理打下良好基础。在下一篇中,我们将讨论NumPy数组的各种属性,以帮助我们更好地理解和使用NumPy库。

8 NumPy基本操作之数组索引与切片

https://zglg.work/numpy-zero/8/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论