NumPy 切片和索引学习笔记

1. 索引

在 NumPy 中,可以使用索引来访问数组中的元素。索引可以是整数或者一个范围。

1.1 整数索引

对于一维数组,我们可以使用一个整数索引来获得该位置上的元素:

pythonCopy Code
import numpy as np a = np.array([1, 3, 5, 7]) print(a[2]) # 输出 5

对于多维数组,我们需要使用多个整数索引:

pythonCopy Code
b = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) print(b[1, 2]) # 输出 5

1.2 范围索引

我们可以使用 : 来表示一个范围。例如,a[start:end] 表示从 startend-1 的所有元素。如果 start 没有指定,则默认为 0;如果 end 没有指定,则默认为数组的大小。

pythonCopy Code
c = np.array([10, 20, 30, 40, 50]) print(c[1:4]) # 输出 [20, 30, 40]

对于多维数组,我们可以在每个维度上都使用 : 表示一个范围。

pythonCopy Code
d = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) print(d[:2, 1:]) # 输出 [[1, 2], [4, 5]]

2. 切片

切片与索引类似,但是允许我们获得数组的一部分。对于一维数组,语法为 a[start:end:step],其中 start 表示开始位置(默认为 0),end 表示结束位置(默认为数组大小),step 表示步长(默认为 1)。

pythonCopy Code
e = np.array([11, 12, 13, 14, 15]) print(e[1:4:2]) # 输出 [12, 14]

对于多维数组,我们需要在每个维度上都指定切片:

pythonCopy Code
f = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) print(f[:2, 1::2]) # 输出 [[1], [4]]

3. 实例

下面是一个实例,展示如何使用切片和索引来操作数组:

pythonCopy Code
import numpy as np # 创建一个 4x4 的数组 arr = np.arange(16).reshape((4, 4)) # 打印原始数组 print("原始数组:\n", arr) # 索引 print("索引:", arr[2, 3]) # 范围索引 print("范围索引:", arr[:, 1]) # 切片 print("切片:", arr[1:3, :2]) # 操作 arr[1:3, :2] *= 10 print("操作后的数组:\n", arr)

输出结果为:

Copy Code
原始数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] 索引: 11 范围索引: [ 1 5 9 13] 切片: [[4 5] [8 9]] 操作后的数组: [[ 0 1 2 3] [40 50 6 7] [80 90 10 11] [12 13 14 15]]

以上就是 NumPy 切片和索引的学习笔记。