首页 > 其他分享 >PyTorch--Tensor的索引和切片

PyTorch--Tensor的索引和切片

时间:2024-09-07 11:52:47浏览次数:12  
标签:10 Tensor -- torch 索引 PyTorch print True tensor

import torch

# tensor索引和切片
a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = torch.tensor([[10, 10, 10], [10, 10, 10], [10, 10, 10]])

print("a的值:\n", a)
# a的值:
#  tensor([[1, 2, 3],
#         [4, 5, 6],
#         [7, 8, 9]])

# ----------------索引-------------------
print("a[1,2]第2行第3列:", a[1, 2])
# a[1,2]第2行第3列: tensor(6)

print("a[-1,-1]:", a[-1, -1])  # 索引位置可以用负数来表示,-1 表示最后索引位置,-2 表示倒数第2个索引位置
# a[-1,-1]: tensor(9)

print("a[1,[0,2]]第2行的第1列和第3列:", a[1, [0, 2]])
# a[1,[0,2]]第2行的第1列和第3列: tensor([4, 6])

print("a[[0,1],[0,2]]获取(0,0)和(1,2)位置上的值:", a[[0, 1], [0, 2]])
# a[[0,1],[0,2]]获取(0,0)和(1,2)位置上的值: tensor([1, 6])

# --布尔索引
index = a > 4  # 判断各位置上的数据是否大于4
print("a>4的索引:\n", index)  # 大于4的位置上为True,小于4的位置上为False
print("a>4的值:", a[index])  # 位置上为True的值
# a>4的索引:
#  tensor([[False, False, False],
#         [False,  True,  True],
#         [ True,  True,  True]])
# a>4的值: tensor([5, 6, 7, 8, 9])

print("大于5输出a的值否则输出b的值:\n", torch.where(a > 5, a, b))
# 大于5输出a的值否则输出b的值:
#  tensor([[10, 10, 10],
#         [10, 10,  6],
#         [ 7,  8,  9]])


# ----------------切片-------------------
print(a)
# tensor([[1, 2, 3],
#         [4, 5, 6],
#         [7, 8, 9]])
print("第1列:", a[:, 0])
# 第1列: tensor([1, 4, 7])

print("第3列:", a[:, 2])
# 第3列: tensor([3, 6, 9])

print("第3列:", a[:, -1])
# 第3列: tensor([3, 6, 9])

print("第1,2列:\n", a[:, 0:2])  # 取所有行,索引为0和1的列,即第1和2列
# 第1,2列:
#  tensor([[1, 2],
#         [4, 5],
#         [7, 8]])

print("第1行:", a[0, :])
# 第1行: tensor([1, 2, 3])

print("第3行:", a[2, :])
# 第3行: tensor([7, 8, 9])

print("第3行:", a[-1, :])
# 第3行: tensor([7, 8, 9])

# ---有步长的切片
print(a)
# tensor([[1, 2, 3],
#         [4, 5, 6],
#         [7, 8, 9]])
print("a[::2, ::2]:\n", a[::2, ::2])  # 步长为2,即取索引为0和2的行,索引为0和2的列
# a[::2, ::2]:
#  tensor([[1, 3],
#         [7, 9]])

print("a[:, ::2]:\n", a[:, ::2])  # 带步长为2,即取所有的行,索引为0和2的列
# a[:, ::2]:
#  tensor([[1, 3],
#         [4, 6],
#         [7, 9]])

t = torch.tensor([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]])
print(t)
# tensor([[ 1,  2,  3,  4,  5],
#         [ 6,  7,  8,  9, 10],
#         [11, 12, 13, 14, 15],
#         [16, 17, 18, 19, 20]])

print("t[1::2, 1::2]:\n", t[1::2, 1::2])
# t[1::2, 1::2]:
#  tensor([[ 7,  9],
#         [17, 19]])

print("t[1::2, ::3]\n", t[1::2, ::3])
# t[1::2, ::3]
#  tensor([[ 6,  9],
#         [16, 19]])

标签:10,Tensor,--,torch,索引,PyTorch,print,True,tensor
From: https://blog.csdn.net/m0_74895132/article/details/141993542

相关文章

  • 金边招聘新增岗位需求
    薪酬为底薪范围(不包含,年终奖金,13-18薪,转正绩效,五险一金,各种补贴)1、初级内容运营-人数不限,薪酬15-18k2、中高级内容运营-人数不限,薪酬18k+3、中高级H5/web前端-2人,25-40k4、中高级UI--1人,20-30k5、中高级安卓--1人,25-40k6、客服--2人,10-12k7、中高级JAVA--1人,25-40k8......
  • Study Plan For Algorithms - Part25
    1.栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。方法一:defvalidateStackSequences(pushed,popped):stack=[]len_pushed=len(pushed)stack_index=0i......
  • Pytorch相关(第二篇)
    Pytorch自动梯度法,实现自定义向前向后传播方法在PyTorch中,自定义自动求导的功能可以通过实现继承自 torch.autograd.Function 的类来实现。这允许您定义自己的前向传播(forward)和反向传播(backward)逻辑。下面是如何自定义实现向前和向后传播的详细步骤和示例代码。自定义 au......
  • 安卓玩机工具-----ADB方式的刷机玩机工具“秋之盒”’ 测试各项功能预览
    秋之盒    安卓玩机工具-秋之盒是一款ADB刷机工具箱,基于谷歌ADB的一款绿色安装,具备了海量扩展模块,支持ADB刷机救砖、一键激活黑域、adb指令修复等功能,是一款开源、免费、易用的手机刷机工具!      并且是一款开源、免费、易用的图形化ADB工具箱,一切功能......
  • 基于Video-Retalking-Gradio的AI数字人
    随着数字内容的普及,如何在视频中实现高精度的音频与唇形同步成为一个重要课题。传统方法通常需要大量的人工干预和调整,效果也往往不尽如人意。为了应对这一挑战,VideoReTalking系统应运而生。由西安电子科技大学和腾讯AI实验室的研究人员联合开发,VideoReTalking是一个创新......
  • C++(std::vector)
    目录1.特性2.常用成员函数2.1构造函数2.2元素访问2.3修改容器2.4容量相关2.5迭代器3.内存管理与效率4.示例:5.性能分析:std::vector是C++标准库中的一个动态数组容器,位于#include<vector>头文件中。它是一个模板类,可以存储任何类型的对象,并根据需要动态调整其大......
  • 基于Easy-Wav2lip-Gradio的AI数字人
    数字人技术近年来在多个领域得到广泛应用,从虚拟主播到电影特效,都需要精确的音视频同步技术来实现逼真的效果。传统的嘴型同步技术往往面临着准确性不高、处理速度慢等问题。为了解决这些问题,原有的Wav2Lip项目应运而生。Wav2Lip通过人工智能技术,实现了音频和视频的高精度同......
  • 图论板子
    Primtypedefpair<int,int>P;intprim(){intans=0,cnt=0;priority_queue<P,vector<P>,greater<P>>q;fill(d+1,d+n+1,INF);d[1]=0;q.push(P(d[1],1));while(!q.empty()&&cnt<......
  • 【容器安全系列Ⅵ】- Linux seccomp隔离
        在本系列中,我们介绍了各种安全层,这些安全层不仅可以将容器与主机上的其他进程隔离开来,还可以将容器与其底层主机隔离开来。在这篇文章中,我们将讨论容器运行时如何将seccomp过滤器用作“最后一道防线”。Syscalls和seccomp概述    Seccomp过滤器是......
  • 推荐我常用的5个爬虫插件&工具,非常强大~
    爬虫,又称为网络爬虫或网页爬虫,是一种自动浏览互联网的程序,它按照一定的算法顺序访问网页,并从中提取有用信息。爬虫软件通常由以下几部分组成:- 用户代理(User-Agent):模拟浏览器访问,避免被网站识别为机器人。- 请求处理:发送HTTP请求,获取网页内容。- 内容解析:使用正则表达式或......