1、数组切片基础
在 Python 中,切片 是从一个给定索引位置获取元素到另一个给定索引位置的操作。
1)切片基本语法
[start : end] [start : end : step]
参数说明:
start:起始索引(包含)end:结束索引(不包含)step:步长(默认值为 1)
规则说明:
不写
start:默认从索引0开始不写
end:默认到该维度的末尾不写
step:默认步长为1
2)基础切片示例
从索引 1 切片到索引 5(不包含 5)
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[1:5])
输出:
[2 3 4 5]
⚠️ 注意:包含 start,不包含 end
从索引 4 切片到数组末尾
print(arr[4:])
输出:
[5 6 7]
从数组开始切片到索引 4(不包含 4)
print(arr[:4])
输出:
[1 2 3 4]
2、负索引切片
负索引用于 从数组末尾开始计数:
-1:最后一个元素-2:倒数第二个元素
例如:
负索引切片
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[-3:-1])
输出:
[5 6]
解释:
-3→ 倒数第三个元素(5)-1→ 倒数第一个元素(不包含)
3、步长(step)
step 用于指定 切片时的步进间隔。
例如:
指定步长
从索引 1 到索引 5,每隔一个元素取一次
4、二维数组(2-D Array)切片
对于二维数组,切片语法为:
arr[row_slice, col_slice]
例如:
切片二维数组
import numpy as np
arr = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])1)访问第二行,索引 1 到 4 的元素
print(arr[1, 1:4])
输出:
[7 8 9]
2)访问前两行的第 3 列
print(arr[0:2, 2])
输出:
[3 8]
3)切片返回一个二维数组
print(arr[0:2, 1:4])
输出:
[[2 3 4] [7 8 9]]
print(arr[1:5:2])
输出:
[2 4]
返回整个数组中每隔一个元素
print(arr[::2])
输出:
[1 3 5 7]
5、综合使用示例
import numpy as np
data = np.array([[1, 2, 3, 4],
[5, 6, 7, 8]])常见切片操作
访问所有行,从第 2 个元素开始
print(data[:, 1:])
输出:
[[2 3 4] [6 7 8]]
访问从第 2 行开始,每行前两个元素
print(data[1:, :2])
输出:
[[5 6]]
访问第一行所有元素
print(data[0, :])
输出:
[1 2 3 4]
访问第二行第三个元素
print(data[1, 2])
输出:
7
访问第一列所有元素
print(data[:, 0])
输出:
[1 5]
访问前两行所有元素
print(data[:2, :])
访问从第二行开始的所有元素
print(data[1:])
访问前两行,从第三个元素开始
print(data[:2, 2:])
输出:
[[3 4] [7 8]]
省略号(...)的使用
省略号 ... 表示 选取所有未明确指定的维度。
print(data[...])
输出:
[[1 2 3 4] [5 6 7 8]]
使用步长进行二维切片
每隔一个元素取一次
print(data[::2, ::2])
输出:
[[1 3] [5 7]]
从第二行开始,每隔两个元素取一次
print(data[1::2, ::2])
输出:
[[5 7]]