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

这篇具有很好参考价值的文章主要介绍了笔记:对多维torch进行任意维度的多“行”操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从二维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进行任意维度的多“行”操作

取出三维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的任意元素操作

待补充文章来源地址https://www.toymoban.com/news/detail-429858.html

到了这里,关于笔记:对多维torch进行任意维度的多“行”操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3.1 多维度随机变量及其分布

          要学习二维随机变量及联合分布,我会按照以下步骤进行: 了解基本概念:首先要了解二维随机变量的概念,即同时包含两个随机变量的变量。还要了解二维随机变量的取值范围以及联合概率密度函数和联合分布函数的定义。 学习联合分布函数的性质:联合分布函数

    2024年02月06日
    浏览(62)
  • Python多维矩阵的各个维度表示(axis = ......)

    在python中对多维矩阵进行操作时,往往要指定操作的维度,一般用0,1,-1这样的数字表示矩阵的某一维度。二维矩阵还是好分辨数字表示的维度的,但对于三维矩阵或更高维度的矩阵就不好分辨了。这里只说明三维矩阵的三个维度怎么分辨。 以一个三维矩阵按不同维度求和

    2024年02月13日
    浏览(35)
  • SpringBoot进阶教程(七十六)多维度排序查询

    在项目中经常能遇到,需要对某些数据集合进行多维度排序的需求。对于集合多条件排序解决方案也有很多,今天我们就介绍一种,思路大致是设置一个分值的集合,这个分值是按照需求来设定大小的,再根据分值的大小对集合排序。 我们来模拟一个需求,现在需要查询一个

    2024年02月08日
    浏览(50)
  • AIGC ChatGPT 实现动态多维度分析雷达图制作

    雷达图在多维度分析中是一种非常实用的可视化工具,主要有以下优势: 易于理解: 雷达图使用多边形或者圆形的形式展示多维度的数据,直观易于理解。 多维度对比: 雷达图可以在同一张图上比较多个项目或者实体在多个维度上的表现。 数据关系明显: 通过雷达图,可

    2024年02月11日
    浏览(46)
  • 异构区块链的多维度安全检测方案

    摘 要 :异构区块链多维度安全检测方案可以为多样化的区块链平台安全性检测提供统一的测评标准和检测方法,辅助相关部门对区块链平台进行有效检测和监管,促进区块链行业的合规发展。通过分析现有区块链安全检测的需求,针对目前多样性的区块链底层平台,提出普

    2024年02月05日
    浏览(40)
  • 多维度聊一聊 k8s 和 openstack

    k8s 和 openstack 无疑是当今云计算领域的两大巨头,它们分别占据着 IaaS 和 PaaS 领域的事实标准,经常被拿来一起比较。我记得大概在三四年前 k8s 如火如荼的发展的时候,“openstack 已死”,“openstack 没落了”之类的文章层出不穷。但是这么年过去了 openstack 老当益壮依然在云

    2024年01月22日
    浏览(45)
  • 抛开价格,DBeaver真的比Navicat好用吗?多维度测评来了!!!

    今天看到一个很有意思的话题“抛开价格,DBeaver真的比Navicat好用吗?” ,正好自己最近使用的数据库连接工具比较多,两个软件都有使用过,我以自己的使用体验给你对比一下,从这个方面去对比: 1、下载难易 DBeaver是个开源软件,比较容易利用现有的网络资源找到安装包。

    2024年02月16日
    浏览(42)
  • 《扬帆优配》两融业务不乏亮点 仍需多维度补短板

    受多重因素影响,2022年证券职业全体成绩承压。不过,到3月29日晚记者发稿时,从已发表的7家上市券商2022年年报来看,券商在两融事务方面不乏亮点。   受访业内人士表明,两融事务的开展不仅丰厚了券商的收入,也促进了券商其他事务的开展。可是,两融事务开展中存在

    2024年02月02日
    浏览(41)
  • Matlab 线性拟合、一维、多维度非线性拟合、多项式拟合

      线性拟合 我随便设定一个函数然后通过解方程计算出对应的系数 假设我的函数原型是 y=a*sin(0.1*x.^2+x)+b* squre(x+1)+c*x+d  拟合系数:   利用matlab实现非线性拟合(三维、高维、参数方程)_matlab多元非线性拟合_hyhhyh21的博客-CSDN博客 简单的一维的拟合: 思路: 将非线性-》线

    2024年02月12日
    浏览(45)
  • Java开发 - 不知道算不算详细的MySQL多维度性能优化剖析

    MySQL性能优化是一个很大的话题,小到一句SQL,大到一个系统,都是我们优化的目标,博主之前曾写过一篇关于SQL优化的博客,感兴趣的小伙伴直接点击即可。本篇,我们将从多个维度来讲解MYSQL性能优化相关的内容,读完此篇,你将初步了解有哪些MySQL的优化策略,以及怎么

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包