笔记:对多维torch进行任意维度的多“行”操作

news2024/12/23 7:04:46

如何取出多维torch指定维度的指定“行”

    • 从二维torch开始
      • 新建torch
      • 取出某一行
      • 取出某一列
      • 一次性取出多行
        • 取出连续的多行
        • 取出不连续的多行
      • 一次取出多列
        • 取出连续的多列
        • 取出不连续的多列
    • 考虑三维torch
      • 取出三维torch的任意两行(means 在dim=0上操作)
        • 取出连续的行
        • 取出不连续的行
      • 取出任意列
        • 取出连续的列 & 取出任意列
      • 取出任意页(dim=2)
        • 取出前n页
        • 取出任意页
    • else:取出dim=0/dim=1/dim=2的任意元素操作

从二维torch开始

新建torch

import torch

# 新建一个二维 torch 
a = torch.tensor ( [[1,2,3,4],
                    [2,3,1,5],
                    [5,1,7,2]])
a.shape

Out[5]: torch.Size([3, 4])

取出某一行

a[1]   # 取出第1行(从0行开始)

Out[6]: tensor([2, 3, 1, 5])

a[1].shape

Out[28]: torch.Size([4])

取出某一列

a[:,2]   # 虽说取出的是第2列,但还是以行的形式显示

Out[26]: tensor([3, 1, 7])

a[:,2].shape

Out[27]: torch.Size([3])

一次性取出多行

取出连续的多行

——有多种操作方式

######## scheme 1 ##########
a[[0, 1]]  # 取出前两行
### 此时需注意,需要使用两个中括号,使用 a[0,1] 的格式取出的是 a 的第0行第1列的具体某个元素“tensor(2)”

Out[7]: 
tensor([[1, 2, 3, 4],
        [2, 3, 1, 5]])

######## scheme 2 ###########
a[[range(2)]]   # 取出前两行
### 当没有别的指示(如冒号等)时,默认对dim=0进行操作

Out[8]: 
tensor([[1, 2, 3, 4],
        [2, 3, 1, 5]])

######### scheme 3 ###########
a[range(2)]   # 也可以不使用两个中括号
Out[31]: 
tensor([[1, 2, 3, 4],
        [2, 3, 1, 5]])     

取出不连续的多行

如:取出第0行和第2行

a[[0,2]]

Out[38]: 
tensor([[1, 2, 3, 4],
        [5, 1, 7, 2]])

一次取出多列

取出连续的多列

——同样拥有多种方案

############## scheme 1 ###############
a[:,range(2)]  # 取出前两列

Out[31]: 
tensor([[1, 2],
        [2, 3],
        [5, 1]])

############ scheme 2 #################
a[:,[0,1]]
Out[32]: 
tensor([[1, 2],
        [2, 3],
        [5, 1]])

取出不连续的多列

如取出第0列和第3列

a[:,[0,3]]

Out[40]: 
tensor([[1, 4],
        [2, 5],
        [5, 2]])

考虑三维torch

# 新建一个三维torch
b = torch.tensor([ [[1, 2, 3, 7], [4, 5, 6, 9]], 
[[7, 8, 9, 2], [10, 11, 12, 3]], 
[[13, 14, 15, 4], [16, 17, 18, 6]]])

b.shape

Out[10]: torch.Size([3, 2, 4])

b

Out[11]: 
tensor([[[ 1,  2,  3,  7],
         [ 4,  5,  6,  9]],
        [[ 7,  8,  9,  2],
         [10, 11, 12,  3]],
        [[13, 14, 15,  4],
         [16, 17, 18,  6]]])

此三维torch可视化如下:
在这里插入图片描述

取出三维torch的任意两行(means 在dim=0上操作)

取出连续的行

以前两行为例

b[range(2)]   # 还是使用中括号

Out[12]: 
tensor([[[ 1,  2,  3,  7],
         [ 4,  5,  6,  9]],
        [[ 7,  8,  9,  2],
         [10, 11, 12,  3]]])

b[range(2)].shape

Out[13]: torch.Size([2, 2, 4])

b[range(2)] == b[[range(2)]] # 使用一个中括号还是两个中括号,都是一样的效果
                             ### 但是不能使用三个,shape 会变成 torch.Size([1,2,2,4])

Out[34]: 
tensor([[[True, True, True, True],
         [True, True, True, True]],
        [[True, True, True, True],
         [True, True, True, True]]])

取出不连续的行

如取出第0行和第2行

b[[0,2]]

Out[42]: 
tensor([[[ 1,  2,  3,  7],
         [ 4,  5,  6,  9]],
        [[13, 14, 15,  4],
         [16, 17, 18,  6]]])

取出任意列

取出连续的列 & 取出任意列

######### 取出中间维度(dim=1)的前一列
b[:,range(1)].shape 

Out[19]: torch.Size([3, 1, 4])

b[:,range(1)]

Out[25]: 
tensor([[[ 1,  2,  3,  7]],
        [[ 7,  8,  9,  2]],
        [[13, 14, 15,  4]]])

############# 取出前两列
b[:,range(2)]   

Out[43]: 
tensor([[[ 1,  2,  3,  7],
         [ 4,  5,  6,  9]],
        [[ 7,  8,  9,  2],
         [10, 11, 12,  3]],
        [[13, 14, 15,  4],
         [16, 17, 18,  6]]])
         
b[:,range(2)].shape

Out[44]: torch.Size([3, 2, 4])

############## 取出任意一列
b[:,1]

Out[46]: 
tensor([[ 4,  5,  6,  9],
        [10, 11, 12,  3],
        [16, 17, 18,  6]])

取出任意页(dim=2)

取出前n页

##################### 取出前两页
b[:,:,range(2)]

Out[47]: 
tensor([[[ 1,  2],
         [ 4,  5]],
        [[ 7,  8],
         [10, 11]],
        [[13, 14],
         [16, 17]]])
         
b[:,:,range(2)].shape

Out[48]: torch.Size([3, 2, 2])

取出任意页

如取出第0页,第2页和第3页

b[:,:,[0,2,3]]

Out[49]: 
tensor([[[ 1,  3,  7],
         [ 4,  6,  9]],
        [[ 7,  9,  2],
         [10, 12,  3]],
        [[13, 15,  4],
         [16, 18,  6]]])
         
b[:,:,[0,2,3]].shape

Out[50]: torch.Size([3, 2, 3])

else:取出dim=0/dim=1/dim=2的任意元素操作

待补充

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

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

相关文章

( 字符串) 9. 回文数 ——【Leetcode每日一题】

❓9. 回文数 难度:简单 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如…

Git的安装与使用+Git在IDEA中的使用

文章目录 一、Git概述1、版本控制器的方式2、Git的工作流程图 二、Git的安装与常用命令1、Git环境安装2、Git环境基本配置3、获取本地仓库4、基础操作指令 三、分支1、常用指令2、解决合并冲突 四、Git远程仓库1、创建远程仓库2、远程操作仓库3、冲突处理 四、IDEA中使用Git1、…

数据结构——二叉树

二叉树 1 二叉树的种类 1.1 满二叉树 节点数量为 2^k - 1 (k是树的深度,底层的叶子节点都是满的) 1.2 完全二叉树 完全二叉树是指除了下面一层外,其余层的节点都是满的; 且最下面一层的叶子节点是从左到右连续的。 下面这个…

pci总线协议学习笔记——PCI总线基本概念

1、pci总线概述 (1)PCI,外设组件互连标准(Peripheral Component Interconnection),是一种由英特尔(Intel)公司1991年推出的用于定义局部总线的标准; (2)最早提出的PCI总线工作在33MHz频率之下,传输带宽达到133MB/s(33M…

【LeetCode】236. 二叉树的最近公共祖先

1.问题 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是…

1992-2022年31省GDP、第一产业增加值、第二产业增加值 第三产业增加值

1992-2022年31省GDP、第一产业增加值、第二产业增加值 第三产业增加值 1、时间:1992-2022年 2、范围:包括31省 3、指标:省GDP、省第一产业增加值、省第二产业增加值、省第三产业增加值 4、缺失情况说明:无缺失 5、来源&#…

【python知识】__init__.py的来龙去脉

一、说明 我们常见__init__.py文件,但说不清楚它的用途,在本文,我将首先把它的来龙去脉说清楚,然后告诉大家,如何编制python工程,培养全局的编程格局。 二、包-模块-函数结构 在Python工程里,当…

playwright连接已有浏览器操作

文章目录 playwright连接已有浏览器操作前置准备打开本地已有缓存的Chrome(理解)指定端口打开浏览器连接指定端口已启动浏览器(推荐) playwright连接已有浏览器操作 前置准备 pip install playwright # 安装playwright的python…

红黑树数据结构

现在JAVASE中HashMap中底层源码是由数组链表红黑树进行设计的,然后很多地方也是用到红黑树,这里单独对红黑树数据结构进行简单的介绍。 目录 红黑树概念 红黑树的性质 自平衡规则 代码 红黑树概念 红黑树,是一种二叉搜索树,…

linux常用命令大全(保姆及入门)

linux常用命令大全 一、文件处理命令1、目录处理命令:ls2、目录处理命令2.1 mkdir2.2 pwd2.3 rmdir2.4 cp2.5 mv2.6 rm 3.文件处理命令3.1 touch3.2 cat3.3 tac3.4 more3.5 less3.6 head3.7 tail 4.链接命令4.1 ln 二、权限管理命令2.1 chmod2.2 chown2.3 chgrp 2.4…

VRPTW:新雀优化算法NOA求解带时间窗的车辆路径问题

一、新雀优化算法NOA求解带时间窗的车辆路径问题 1.1VRPTW模型如下: 带时间窗的车辆路径问题(Vehicle Routing Problem with Time Windows, VRPTW) 1.2新雀优化算法NOA求解VRPTW close all clear clc SearchAgents_no30; % 种群大小 Function_nameF1; Max_ite…

准备“开黑”,电脑却“告退”?游戏闪退的解决方法

游戏玩家近期可能会发现,不少大作陆陆续续登录PC市场,比如《死亡岛 2》、《无畏契约》等。但也有不少游戏用户会发现,电脑玩游戏时容易出现闪退的情况。特别是在进行高负荷运算的时候,有一些游戏更为容易出现这种情况,…

[架构之路-176]-《软考-系统分析师》-17-嵌入式系统分析与设计 -1- 实时性(任务切换时间、中断延迟时间、中断响应时间)、可靠性、功耗、体积、成本

目录 前言: 1 7 . 1 嵌 入 式 系 统 概 述 1 . 嵌入式系统的特点 (1) 系统专用性强。 (2) 系统实时性强。 (3) 软硬件依赖性强 (4) 处理器专用。 ( 5 ) 多种技术紧密结合。 (6) 系统透明性。 (7) 系统资源受限。 2 . 嵌入式系统的组成 1 7 . 3 嵌入式实…

拷贝构造函数和赋值重载函数详解

1.拷贝构造函数 1.1拷贝构造函数的概念 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。拷贝构造函数也是特殊的成员函数,其特征如下&#…

Golang每日一练(leetDay0051)

目录 151. 颠倒字符串中的单词 Reverse Words In A String 🌟🌟 152. 乘积最大子数组 Maximum Product Sub-Array 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…

【分布式】CAP原则和BASE理论

CAP原则概述 CConsistency一致性AAvailability可用性PPartition tolerance分区容错性 1998年,加州大学的计算机科学家Eric Brewer提出,分布式系统有三个指标 一致性(C):在分布式系统中的所有数据备份,在同…

TiDB实战篇-基于索引的SQL优化

简介 TiDB实战篇-基于索引的SQL优化。 Online DDL 允许直接在线执行ddl操作,不会锁表,但是执行多个ddl的时候会要排队。 原理 控制创建索引的速度 查看影响 标红的是加了多少行索引。 添加索引的线上的影响(读写频繁) 只读场…

Linux程序设计之IP地址转换

1.通常,人们习惯于使用可读性好的字符串来表示IP的地址,但是,在实际的使用过程中,需要使用的IP地址应该为无符号的整数(在计算机中存储时是对应的二进制,只有二进制计算机才能识别,即0、1)。已经封装好的函…

windows开机不自动挂载磁盘的方法

本人的电脑系统为win11 写作时间20230430 开机不挂载某块磁盘的理由 1.本人电脑上有个仓库盘是机械硬盘,并不是每次开机都要用到,开机不挂载也许有利于增加数据盘的寿命 2.挂载了数据盘,有时候打开文件页面会比较慢,不够丝滑 …

MATLAB绘制汽车理论的仿真图片

这里写自定义目录标题 仿真绘图内容发动机最优曲线最优燃油消耗率曲线最优效率曲线工作时间/能量消耗的分布 传统车动力性分析绘制三(或多个)y坐标轴函数统计数据分布情况函数 仿真绘图内容 从传统车到新能源混合动力车型的不同绘制。 发动机最优曲线 …