张量索引操作

一.前言

本期我们来说一下张量的索引操作,需要掌握张量不同索引操作,我们在操作张量时,经常需要去进⾏获取或者修改操作,掌握张量的花式索引操作是必须的⼀项能⼒。

二.简单行、列索引

import torchdata = torch.randint(0, 10, [4, 5])
print(data)
print('-' * 50)def test01():print(data[0])  #取行print(data[:, 0]) #取列print('-' * 50)if __name__ == '__main__':test01()

结果展示:

tensor([[5, 2, 1, 3, 0],
[1, 7, 3, 9, 1],
[9, 3, 4, 8, 4],
[0, 3, 3, 1, 1]])
--------------------------------------------------
tensor([5, 2, 1, 3, 0])
tensor([5, 1, 9, 0])
-------------------------------------------------- 

三.列表索引

import torchdata = torch.randint(0, 10, [4, 5])
print(data)
print('-' * 50)def test02():# 返回 (0, 1)、(1, 2) 两个位置的元素print(data[[0, 1], [1, 2]])print('-' * 50)# 返回 0、1 ⾏的 1、2 列共4个元素print(data[[[0], [1]], [1, 2]])if __name__ == '__main__':test02()

结果展示:

tensor([[3, 8, 7, 5, 6],
[3, 4, 4, 2, 4],
[3, 7, 0, 1, 5],
[5, 6, 8, 5, 8]])
--------------------------------------------------
tensor([8, 4])
--------------------------------------------------
tensor([[8, 7],
[4, 4]]) 

四.索引范围 

import torchdata = torch.randint(0, 10, [4, 5])
print(data)
print('-' * 50)# 3. 范围索引
def test03():# 前3⾏的前2列数据print(data[:3, :2])# 第2⾏到最后的前2列数据print(data[2:, :2])if __name__ == '__main__':test03()

结果展示:

 tensor([[4, 7, 1, 8, 5],
[4, 4, 8, 7, 0],
[1, 4, 3, 8, 8],
[7, 0, 1, 7, 1]])
--------------------------------------------------
tensor([[4, 7],
[4, 4],
[1, 4]])
tensor([[1, 4],
[7, 0]])

五.布尔索引 

import torchdata = torch.randint(0, 10, [4, 5])
print(data)
print('-' * 50)# 布尔索引
def test():# 第2列⼤于5的⾏数据print(data[data[:, 2] > 5])# 第1⾏⼤于5的列数据print(data[:, data[1] > 5])if __name__ == '__main__':test()

结果展示:

tensor([[2, 4, 2, 2, 3],
[7, 8, 3, 8, 6],
[8, 4, 5, 4, 1],
[7, 5, 8, 7, 0]])
--------------------------------------------------
tensor([[7, 5, 8, 7, 0]])
tensor([[2, 4, 2, 3],
[7, 8, 8, 6],
[8, 4, 4, 1],
[7, 5, 7, 0]]) 

六.多维索引

import torch# 布尔索引
def test05():data = torch.randint(0, 10, [3, 4, 5])print(data)print('-' * 50)print(data[0, :, :])print(data[:, 0, :])print(data[:, :, 0])if __name__ == '__main__':test05()

结果展示:

tensor([[[7, 4, 2, 3, 5],
[6, 1, 2, 1, 0],
[8, 2, 2, 4, 3],
[3, 5, 4, 5, 8]],

        [[8, 4, 9, 8, 2],
[1, 3, 5, 8, 1],
[2, 3, 0, 6, 6],
[7, 2, 4, 7, 9]],

        [[8, 8, 1, 7, 2],
[8, 9, 9, 2, 6],
[6, 5, 3, 0, 4],
[9, 8, 1, 2, 1]]])
--------------------------------------------------
tensor([[7, 4, 2, 3, 5],
[6, 1, 2, 1, 0],
[8, 2, 2, 4, 3],
[3, 5, 4, 5, 8]])
tensor([[7, 4, 2, 3, 5],
[8, 4, 9, 8, 2],
[8, 8, 1, 7, 2]])
tensor([[7, 6, 8, 3],
[8, 1, 2, 7],
[8, 8, 6, 9]])

七.总结 

列表的索引和numpy取值是基本一样的,大家把代码自己运行一遍就差不多就知道了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88655.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 启动中间件

docker 启动 MySQL # 创建目录 mkdir -p /Users/dongdong/software/mysql/{conf,data}docker run -d \ -p 3306:3306 \ -v /Users/dongdong/software/mysql/conf:/etc/mysql/conf.d \ -v /Users/dongdong/software/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDroot \ -…

如何批量旋转视频90度?

用相机拍摄视频的时候,原本是竖直拍的,但是放到电脑里面看的时候,却变成了横版的。如果我们需要放到剪映或者其他软件做剪辑的时候,一个一个去旋转视频会比较麻烦,这里,我们可以事先用.bat文件批处理的方式…

(2025)IDEA 下载与安装保姆级指南

目录 一、下载 IntelliJ IDEA (一)访问官方网站 (二)选择版本 (三)下载安装包 二、安装 IntelliJ IDEA (一)运行安装程序 (二)选择安装语言 &#xf…

【CV综合实战】基于深度学习的工业压力表智能检测与读数系统【1】压力表位置检测

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

性能狂飙 Gooxi 8卡5090服务器重新定义高密度算力

国鑫Intel Eagle Stream平台8卡RTX5090AI服务器性能到底有多强?小编一文带你看懂个中奥妙。国鑫Intel Eagle Stream平台8卡RTX5090AI服务器如图,国鑫Intel Eagle Stream平台8卡RTX5090AI服务器(SY6108G-G4)只有6U高度,…

零基础掌握Go语言需要多久?报班的话哪家好?

大家有没有发现,近年来,Go语言越来越受欢迎了,TIOBE榜单中,Go现在已经稳居前10了。 尤其在云计算、区块链、微服务等领域,Go语言更是“钦点语言”,很多大厂也都在积极使用Go语言,薪资待遇更是连…

【网络】Linux 内核优化实战 - net.ipv4.tcp_no_metrics_save

目录一、TCP连接指标缓存的作用二、tcp_no_metrics_save的取值及含义三、适用场景与影响推荐启用缓存(值为0)的场景:推荐禁用缓存(值为1)的场景:实际影响:四、如何查看和修改参数1. 查看当前值2…

13. G1垃圾回收器

1. JVM介绍和运行流程-CSDN博客 2. 什么是程序计数器-CSDN博客 3. java 堆和 JVM 内存结构-CSDN博客 4. 虚拟机栈-CSDN博客 5. JVM 的方法区-CSDN博客 6. JVM直接内存-CSDN博客 7. JVM类加载器与双亲委派模型-CSDN博客 8. JVM类装载的执行过程-CSDN博客 9. JVM垃圾回收…

算法学习笔记:13.归并排序——从原理到实战,涵盖 LeetCode 与考研 408 例题

归并排序是一种基于分治策略的经典排序算法,由约翰・冯・诺依曼在 1945 年提出。它以稳定的 O (nlogn) 时间复杂度和良好的可并行性,在大规模数据排序场景中占据重要地位。与快速排序的 “先分区后排序” 不同,归并排序采用 “先排序后合并”…

Kotlin基础学习记录

变量和函数 变量 // val为常量,一旦赋值就不可变 val a 10 val a: Int 10 a 3 // 报错// var为变量 var a 10 a 3 var b: Int 20 b 2函数fun add(a: Int, b: Int): Unit {a b // 报错,参数默认val }fun add(a: Int, b: Int) {var x: Int ax b …

【C#】GraphicsPath的用法

在 C# 中,GraphicsPath 是 GDI 提供的一个非常强大的类,用于创建和操作复杂图形路径。它可以用来绘制直线、曲线、多边形等形状,并支持判断点是否在路径内或路径的轮廓上。一、基本概念GraphicsPath 类功能:添加各种几何图形&…

C语言32个关键字

文章目录数据类型1、数据类型(12个)控制语句2、控制语句关键字(12个)存储类型3、存储类型关键字(4个)其他关键字4、其他关键字(4个)​一共32个关键字分为 数据类型 1、数据类型&am…

粒子滤波|粒子滤波的相关算法理论介绍

在自动控制、导航、目标跟踪等众多领域,系统状态估计是获取真实状态的关键环节。由于观测信号常受噪声干扰,滤波技术成为提取可靠信息的核心手段。本文将围绕目标跟踪技术中的滤波算法理论展开,重点解析粒子滤波框架的原理与应用。一、动态系…

Jenkins+Gitee+Docker容器化部署

写在前文 本文主要是通过Jenkins的maven项目版本GiteeDocker-maven插件来进行部署的,本文没有使用dockerfile/docker-compose。 本文默认已经安装了Docker 1、安装Jenkins Step1、创建文件夹当作映射jenkins的home文件夹 mkdir /app/jenkins Step2、赋权&#xff…

[Meetily后端框架] 多模型-Pydantic AI 代理-统一抽象 | SQLite管理

第5章:人工智能模型交互(Pydantic-AI 代理) 欢迎回来! 在上一章第四章:文字记录处理逻辑中,我们学习了TranscriptProcessor如何将冗长的会议记录分解为称为"块"的较小片段,因为人工…

利用DeepSeek实现rust调用duckdb动态链接库的duckdb CLI

提示词:请用rust调用duckdb-rs实现一个duckdb CLI,支持语法突出显示和计时,还支持命令行管道输入输出 Cargo.toml [package] name "duckdb-cli" version "0.1.0" edition "2024"[dependencies] duckdb "1.3.1&qu…

C++,从汇编角度看《虚拟继承的邪恶》

刷到一篇文章&#xff1a; 作者&#xff1a; 原文&#xff1a;虛擬繼承的邪惡 讨论到这样的一个程序&#xff0c;最终输出什么&#xff1f;&#xff1f;&#xff1f; 代码有简化命名 using namespace std;class A { public:A(int a 0) : v(a) {};int v; };template <type…

多 Agent 强化学习实践指南(一):CTDE PPO 在合作捕食者-猎物游戏中的应用详解

我们来详细讲解如何在合作捕食者-猎物游戏中结合 PPO (Proximal Policy Optimization) 算法。我们将聚焦于 CTDE&#xff08;Centralized Training, Decentralized Execution&#xff0c;集中训练、分散执行&#xff09; 模式&#xff0c;因为这是处理合作多 Agent 任务的常用且…

Web应用文件上传安全设计指南

引言 在当今的Web应用中&#xff0c;文件上传功能已成为基础且必要的服务能力&#xff0c;但不当的设计可能带来目录遍历、代码注入、服务端资源耗尽等安全风险。本文从威胁模型、安全设计原则、技术实现三个维度&#xff0c;系统阐述安全文件上传架构的设计要点。 一、威胁模型…

用 React Three Fiber 实现 3D 城市模型的扩散光圈特效

本文介绍了如何使用 React Three Fiber&#xff08;R3F&#xff09;和 Three.js 实现一个从中心向外扩散的光圈特效&#xff08;DiffuseAperture 组件&#xff09;&#xff0c;并将其集成到城市 3D 模型&#xff08;CityModel 组件&#xff09;中。该特效通过动态调整圆柱几何体…