代码阅读 | torch.sort函数

知识点https://blog.csdn.net/u012495579/article/details/106117511网友讲得非常清晰了。

代码如下:

lengths = [17,17,19,23,7]
lengths = torch.Tensor(lengths) 
a, idx_sort = torch.sort(torch.Tensor(lengths), dim=0, descending=True) 
print(a)
print(idx_sort)
print('----------------------------')
b, idx_unsort = torch.sort(idx_sort, dim=0)
print(b)
print(idx_unsort)

结果是:

主要工作:分析结果是如何计算所得。

torch.sort函数主要包含三个部分得参数,需要排序的数据根据的维度(二维数组的话,0表列,1表行)、排序方式(升序or降序)。

还需要注意的是:返回值有两个:第一个是排序后的数据,第二个是排序后的索引

a, idx_sort = torch.sort(torch.Tensor(lengths), dim=0, descending=True) 

含义:

待排序的数据是:[17,17,19,23,7],按照列排序,降序。

排序后的数据是:23,19,17,17,7 (这个步骤,大部分人都没有问题)

排序后的索引是如何计算的:先看待排序的数据下标[17-【0】,17-【1】,19-【2】,23-【3】,7-【4】],排序后是[23,19,17,17,7],对应的下标就是:[3,2,0,1,4]

现在理解为啥a的结果和idx_sort的结果是这样了吧!

接下来看代码:

b, idx_unsort = torch.sort(idx_sort, dim=0)

含义:

首先看到参数只有待排序的数据和依据,此时是升序还是降序,这就要根据函数原型看了,默认是升序。

其次:寻找待排数据、排序后的数据以及排序后的索引,有思路了就好办了。

待排序的数据是:[3,2,0,1,4],按照列排序,升序。

排序后的数据是:0,1,2,3,4 (这个步骤,大部分人都没有问题)

排序后的索引是如何计算的:先看待排序的数据下标[3-【0】,2-【1】,0-【2】,1-【3】,4-【4】],排序后是[0,1,2,3,4],对应的下标就是:[2,3,1,0,4]

 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值