当前位置: 首页 > article >正文

PyTorch基本使用-张量的索引操作

在操作张量时,经常要去获取某些元素进行处理或者修改操作,在这里需要了解torch中的索引操作。

准备数据:

data = torch.randint(0,10,[4,5])
print('data--->',data)

输出结果:

data---> tensor([[3, 9, 4, 0, 5],
        [7, 5, 9, 9, 7],
        [5, 9, 8, 9, 7],
        [9, 2, 6, 7, 7]])
  • 简单行、列索引

    print('第一行:',data[0])
    print('第一列:',data[:,0])
    

    输出结果:

    第一行: tensor([3, 9, 4, 0, 5])
    第一列: tensor([3, 7, 5, 9])
    
  • 列表索引

    print('-----------------返回(0,1)、(1,2) 2个位置的元素------------------')
    print(data[[0,1],[1,2]])
    print('-----------------返回0、1 行的1、2 列共4个元素------------------')
    print(data[[[0],[1]],[1,2]])
    

    输出结果:

    -----------------返回(0,1)、(1,2) 2个位置的元素------------------
    tensor([9, 9])
    -----------------返回0、1 行的1、2 列共4个元素------------------
    tensor([[9, 4],
            [5, 9]])
    
  • 范围索引

    print('-----------------前3行、前2列的数据------------------')
    print(data[:3,:2])
    print('-----------------第2行到最后的前2列数据------------------')
    print(data[2:,:2])
    

    输出结果:

    -----------------前3行、前2列的数据------------------
    tensor([[3, 9],
            [7, 5],
            [5, 9]])
    -----------------第2行到最后的前2列数据------------------
    tensor([[5, 9],
            [9, 2]])
    
  • 布尔索引

    print('-----------------第三列大于5的行数据------------------')
    print(data[data[:,2] > 5])
    print('-----------------第二行大于5的行数据------------------')
    print(data[:,data[1] > 5])
    

    输出结果:

    -----------------第三列大于5的行数据------------------
    tensor([[7, 5, 9, 9, 7],
            [5, 9, 8, 9, 7],
            [9, 2, 6, 7, 7]])
    -----------------第二行大于5的行数据------------------
    tensor([[3, 4, 0, 5],
            [7, 9, 9, 7],
            [5, 8, 9, 7],
            [9, 6, 7, 7]])
    
  • 多维索引

    data = torch.randint(0,10,[3,4,5])
    print(data)
    # 获取0轴上的第一个数据
    print(data[0,:,:])
    # 获取1轴上的第一个数据
    print(data[:,0,:])
    # 获取2轴上的第一个数据
    print(data[:,:,0])
    

    输出结果:

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

http://www.kler.cn/a/429216.html

相关文章:

  • 迅为RK3576开发板Android 多屏显示
  • 01.17周五F34-Day58打卡
  • 【全面解析】深入解析 TCP/IP 协议:网络通信的基石
  • Kotlin语言的数据库交互
  • 1.8 GPT-4:开创人工智能的新纪元
  • 【进程与线程】进程的状态
  • 【docker集群应用】Docker + consul的容器服务更新与发现
  • Google BERT入门(3)Transformer的自注意力机制的理解(下)
  • vue router 和route 区别
  • 【MySQL】——用一文解决@基础函数group by
  • 同步数据至ES时,数据丢失问题处理
  • 为什么 JavaScript 中的 `eval` 被禁止使用?
  • 运维工程师.云计算工程师.服务器操作集锦
  • Sui 集成 Phantom,生态迎来全新里程碑
  • aws(学习笔记第十六课) 使用负载均衡器(ELB)解耦webserver以及输出ELB的日志到S3
  • 解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法
  • SQL注入--二次注入
  • Mybatis-plus 简单使用,mybatis-plus 分页模糊查询报500 的错
  • 设计模式的艺术读书笔记
  • 前端热门面试题目(六)
  • Elasticsearch使用(2):docker安装es、基础操作、mapping映射
  • MTK关于 Camera Otp
  • 快速了解什么是WELL认证?
  • Kotlin设计模式之抽象工厂模式
  • Linux C/C++如何处理两个静态库相互依赖的问题
  • Vulkan 开发(十二):Vulkan 渲染通道