三种方法
numpy中有函数argsort来返回排序后的下标
import numpy as np
nums = [4, 1, 5, 2, 9, 6, 8, 7]
print(np.argsort(nums))
结果
[1 3 0 2 5 7 6 4]
pytorch中的torch.sort本身就能返回排序后的下标
Python中没有直接调用的接口,怎么办呢?
用enumerate再排序就可以了
nums = [4, 1, 5, 2, 9, 6, 8, 7]
sorted_nums = sorted(enumerate(nums), key=lambda x: x[1])
idx = [i[0] for i in sorted_nums]
nums = [i[1] for i in sorted_nums]
结果
[1, 3, 0, 2, 5, 7, 6, 4]
[1, 2, 4, 5, 6, 7, 8, 9]