Pytorch学习:将tensor中的元素按值的大小顺序进行位置调换

本文介绍了如何在PyTorch中对tensor进行元素位置调换,根据元素值大小进行升序或降序排列。通过两次sort操作获取元素在原tensor中的位置,并实现位置互换。对于一维和二维tensor提供了具体示例,对于多维tensor,读者可以类推应用。
摘要由CSDN通过智能技术生成

参考资料:https://blog.csdn.net/LXX516/article/details/78804884

  在Pytorch使用中,可能会用到这样的tensor操作:将tensor中的元素按值的大小顺序进行位置调换,即最大值和最小值进行位置对换,次大值和次小值进行位置对换……根据值的大小依次进行位置对换。如果tensor中的值是按大小顺序排列的,那就是简单的反转。那如果tensor中的值是乱序的呢?

  开动了一下我的小脑筋,我发现可以通过使用一次sort函数得到升序后元素在原tensor中的位置,再使用一次sort函数得到降序后元素在原tensor中的位置,反过来也可以,然后进行位置互换,来看一下实例:

对于一维的tensor

一维

一维tensor示例

  从图中可以看出,a11和b11分别是通过sort函数得到的降序和升序后元素在原tensor中的位置,根据这两个位置列表就可以实现tensor中的元素按值的大小顺序进行位置调换。

对于二维的tensor

  因为sort函数只能在某一个维度上进行操作,返回的位置列表也是该维度上的index,因此,对于二维的tensor,方法不变,但我们需要人为补上一个维度的索引。

二维

二维tensor示例
(有一步unsqueeze是错误操作,捂脸。。。)

  上图中的b向量就是我们人为补上的0维索引。对于多维tensor的情况,大家可以参照二维的情况,自由开动小脑瓜吧~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值