7 Pytorch小白从零学教程:张量的索引与切片
系列进度
PyTorch 入门 · 第 7 / 20 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
索引和切片看似基础,但会直接影响模型输入。尤其是批次维度和通道维度,一旦切错,模型可能还能跑,却学不到正确东西。
切完张量后,我会立刻检查 shape 和前几项值。只看代码不看结果,很容易把行列维度看反。
在上一篇中,我们介绍了张量的基本操作,如张量的创建、数据类型和一些常用的操作。如今,我们将深入探讨张量的索引与切片,这将帮助我们更灵活地处理数据。掌握这一部分的知识,可以为后续学习自动求导奠定坚实的基础。
张量的索引
在PyTorch中,张量的索引与NumPy基本相似。你可以使用[]来访问张量中的元素。以下是一些常见的索引方法。
学习 PyTorch 张量索引与切片时,先看维度顺序、切片范围、返回形状和是否共享底层数据。
1. 一维张量的索引
首先,我们创建一个一维张量:
import torch
# 创建一维张量
tensor1d = torch.tensor([10, 20, 30, 40, 50])
print(tensor1d) # 输出: tensor([10, 20, 30, 40, 50])
我们可以通过索引访问单个元素:
# 访问第一个元素(索引0)
print(tensor1d[0]) # 输出: tensor(10)
2. 二维张量的索引
接下来,我们创建一个二维张量:
# 创建二维张量
tensor2d = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(tensor2d)
# 输出:
# tensor([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
在二维张量中,我们可以通过行和列的索引来访问元素:
# 访问第二行第三列的元素
print(tensor2d[1, 2]) # 输出: tensor(6)
3. 使用切片访问部分元素
我们可以通过切片访问张量的一部分。例如,获取一维张量的前两个元素:
# 切片获取前两个元素
print(tensor1d[0:2]) # 输出: tensor([10, 20])
对于二维张量,我们可以通过切片获取特定的行或列:
# 获取前两行
print(tensor2d[0:2])
# 输出:
# tensor([[1, 2, 3],
# [4, 5, 6]])
# 获取第二列
print(tensor2d[:, 1]) # 输出: tensor([2, 5, 8])
张量的高级索引
1. 布尔索引
学习《Pytorch小白从零学教程:张量的索引与切片》不必一口气吃完所有细节。先挑一个能动手验证的小问题,再顺着图和正文补齐概念。
布尔索引允许基于条件选择元素。例如,我们想选择大于30的所有元素:
# 创建一维张量
tensor1d = torch.tensor([10, 20, 30, 40, 50])
# 使用布尔索引
result = tensor1d[tensor1d > 30]
print(result) # 输出: tensor([40, 50])
2. 花式索引
花式索引允许我们通过指定索引列表来选择元素。例如,选择特定位置的元素:
# 花式索引
indices = torch.tensor([0, 2, 4])
result = tensor1d[indices]
print(result) # 输出: tensor([10, 30, 50])
切片与视图
切片操作返回的是张量的一个“视图”,这意味着对视图进行修改会影响原始张量。例如:
# 创建二维张量
tensor2d = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
slice_tensor = tensor2d[0:2] # 切片
# 修改切片
slice_tensor[0, 0] = 100
print(tensor2d)
# 输出:
# tensor([[100, 2, 3],
# [ 4, 5, 6],
# [ 7, 8, 9]])
如上所示,对slice_tensor的修改影响了tensor2d,因为它们共享相同的存储空间。
如果《Pytorch小白从零学教程:张量的索引与切片》还没完全消化,可以从这张卡片的四个动作重新走一遍。
回看《Pytorch小白从零学教程:张量的索引与切片》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
总结
本节中,我们学习了张量的索引和切片的基本用法,掌握了如何通过索引访问和操作张量中的数据。通过以上代码示例和案例分析,相信你已对这一内容有了较为深入的理解。
在下一篇教程中,我们将介绍自动求导的基本概念,它将为我们在深度学习中进行反向传播打下基础。希望你继续保持学习热情,为进入更复杂的深度学习领域做好准备!
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
Pytorch小白从零学教程:张量的索引与切片适合谁读?
这是 PyTorch 入门 系列第 7 / 20 篇,适合正在学习PyTorch 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇PyTorch 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读