Skip to content
 
📑标签
🏷软件 🏷robot 🏷python

📚 Python切片操作全解析:从一维到高维的魔法切割术 ✂️


一、一维切片操作(列表/字符串)

1️⃣ [-1]
👉 取最后一个元素,Python的负索引魔法

python
X = [1,2,3,4,5]
print(X[-1])  # 输出:5

2️⃣ [:-1]
👉 排除最后一个元素,相当于"掐头去尾"

python
X = [1,2,3,4,5]
print(X[:-1])  # 输出:[1,2,3,4]

3️⃣ [::-1]
👉 逆序整个序列,镜像反转魔法

python
X = [1,2,3,4,5]
print(X[::-1])  # 输出:[5,4,3,2,1]

4️⃣ [n::-1]
👉 从索引n开始逆序到开头

python
X = [1,2,3,4,5]
print(X[3::-1])  # 输出:[4,3,2,1]

二、多维切片操作(适用于NumPy等库)

5️⃣ [:, :, 0]
👉 三维数组操作:前两维全选,第三维取索引0

python
import numpy as np
arr = np.arange(24).reshape(2,3,4)
print(arr[:, :, 0])  
# 输出:前两维全选,第三维取第0层的所有数据

6️⃣ [..., 0]
👉 省略号魔法:自动填充所有前置维度,最后一维取索引0

python
arr = np.arange(24).reshape(2,3,4)
print(arr[..., 0])  # 等效于 arr[:, :, 0]

7️⃣ [..., ::-1]
👉 省略号+逆序:保持其他维度不变,最后一维逆序

python
arr = np.arange(24).reshape(2,3,4)
print(arr[..., ::-1])  # 每个二维切片最后一维逆序

三、切片原理速记表 🧠

切片模式等价操作行为描述应用场景
[start:][start:len(seq):1]从起点到末尾截取后半段
[:end][0🔚1]从头到终点前一位截取前半段
[::2][0:len(seq):2]隔一个取一个取偶数位元素
[::-1][len(seq)-1👎-1]逆序整个序列数据反转
[3::-1][3:-len(seq)-1:-1]从第3个元素倒序到开头局部逆序提取
[...,0]自动填充前置维度高维数据最后一维操作多维数组切片

四、切片冷知识 ❄️

  • 负索引计算:X[-n] = X[len(X)-n] [2][4]
  • 缺省值逻辑:步长为正时,start默认0,end默认末尾;步长为负时,start默认末尾,end默认开头 [3][7]
  • 内存共享特性:切片生成的是原数据的视图(浅拷贝),修改切片会影响原数据 [4][7]
python
a = [1,2,3,4]
b = a[1:3]
b[0] = 99
print(a)  # 输出:[1,99,3,4] 😱

五、高维切片实战 🌌

python
# 四维时空数据切片示例(假设为时间×高度×纬度×经度)
weather_data = np.random.rand(365, 10, 180, 360)

# 取第0天所有高度层的北纬30度数据
slice1 = weather_data[0, :, 150, :]  

# 取所有时间的500hPa高度场逆序经度
slice2 = weather_data[:, 5, :, ::-1]  

# 取最后一天地表温度的第0个变量
slice3 = weather_data[-1, 0, ..., 0]

💡 学习建议:

  1. dir()查看对象的__getitem__方法理解切片原理 [4]
  2. 在IPython中用X??查看切片实现的C源码(进阶向)
  3. 掌握NumPy的np.s_工具生成复杂切片 [6]
Playlist
Total 4
  • 星茶会
    灰澈
  • song1
    author1
  • soewrewfg1
    author1
  • PIKASONIC - Blossom
    author1