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

Tensor做为索引

文章目录

    • 1、tensor作为行索引
    • 2、tensor作为列索引
    • 3、切片作为索引
    • 4、布尔张量作为索引


1、tensor作为行索引

假设我们有一个二维张量 A,它的形状是 4×4:

A = torch.tensor([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
])

如果我们想用一个索引张量 index 来选择特定的行和列:

index = torch.tensor([0, 2])  # 选取第0行和第2行
result = A[index]

result 将包含 A 的第0行和第2行:

tensor([
    [1, 2, 3, 4],
    [9, 10, 11, 12]
])

2、tensor作为列索引

import torch

# 创建一个 3x4 的随机张量
A = torch.tensor([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
])

# 选择特定的行
rows = torch.tensor([0, 1, 2])  # 所有行

# 使用索引获取第 1 列元素
column_1 = A[rows, 1]  # 指定列索引为 1
print("第 1 列元素:", column_1)

# 指定行和列的索引
rows = torch.tensor([0, 1, 2])  # 所有行
columns = torch.tensor([0, 2])   # 选择第 0 列和第 2 列

# 使用索引获取指定列的元素
result = A[rows.unsqueeze(1), columns]  # 需要增加一个维度来广播

print("第 0 列和第 2 列元素:\n", result)
1 列元素: tensor([ 2,  6, 10])0 列和第 2 列元素:
 tensor([[ 1,  3],
        [ 5,  7],
        [ 9, 11]])

3、切片作为索引

import torch
# 二维张量 A,它的形状是 4*4
A = torch.tensor([[
    [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16],
    ],
    [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
    ],
    [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
    ]],
    [
    [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16],
    ],
    [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
    ],
    [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
    ]]])
print(A.shape)
# 选取第0行和第2行
index = torch.tensor([0, 1,2,3])  
index2 = torch.tensor([0,1,2,3])
result = A[:,:,index2, index]

print(result)
'''
torch.Size([2, 3, 4, 4])
tensor([[[ 1,  6, 11, 16],
         [ 1,  6, 11, 16],
         [ 1,  6, 11, 16]],

        [[ 1,  6, 11, 16],
         [ 1,  6, 11, 16],
         [ 1,  6, 11, 16]]])
'''

4、布尔张量作为索引

A = torch.tensor([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
])

# 创建一个布尔张量,选择所有大于 5 的元素
mask = A > 5

# 使用布尔张量作为索引
filtered_elements = A[mask]

print("原始张量 A:")
print(A)
print("\n布尔张量 mask:")
print(mask)
print("\n过滤后的元素:")
print(filtered_elements)
原始张量 A:
tensor([[ 1,  2,  3,  4],
        [ 5,  6,  7,  8],
        [ 9, 10, 11, 12]])

布尔张量 mask:
tensor([[False, False, False, False],
        [False,  True,  True,  True],
        [ True,  True,  True,  True]])

过滤后的元素:
tensor([ 6,  7,  8,  9, 10, 11, 12])

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

相关文章:

  • SpringBoot实现zip压缩包下载
  • CSS3新增长度单位(二)
  • 【万兴科技-注册_登录安全分析报告】
  • RocketMQ 消息消费失败的处理机制
  • 如何更新已经发布的 NPM 组件库
  • Webserver(2.6)有名管道
  • 庭田科技参与第四届计算机辅助焊接工程与增材制造国际研讨会
  • C语言编写的自动取款机模拟程序
  • HTML 基础标签——表格标签<table>
  • win10 wsl2 install
  • 读数据工程之道:设计和构建健壮的数据系统25查询
  • 算法训练(leetcode)二刷第十五天 | 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
  • 【hector mapping参数设置】
  • Android开发教程实加载中...动效
  • 使用Docker Swarm进行集群管理
  • Matlab实现鼠群优化算法优化回声状态网络模型 (ROS-ESN)(附源码)
  • 基于IMX6ULL的电子产品量产工具
  • 深度了解flink(八) JobManager(2)initializeServices剖析
  • 29.2 golang实战项目log2metrics架构说明
  • 基于SpringBoot的汽车配件销售管理系统
  • C# 如何处理 WebSocket 连接异常
  • Ubuntu 搭建Yapi服务
  • NLP segment-04-自动摘要 auto-summary java 开源实现
  • 大型商场应急响应:SpringBoot技术实现
  • 关于我的编程语言——C/C++——第三篇
  • 详细分析Pytorch中的transpose基本知识(附Demo)| 对比 permute