0.个人理解
argsort函数作用,得到矩阵中值的升序排列的位置所在序号
对矩阵a进行第一次使用argsort函数,得到b升序值位置所在序号(包含连续变化的大小关系,去掉了原本的数字含义,具有两个信息:升序+位置信息);
对矩阵进行第二次使用argsort函数,得所在位置值的排序序号c;
对矩阵进行第三次使用argsort函数,与第一次所得结果一致d;
由于第一次获的了升序序列的位置序号,第二次排序的时候会根据根据这些序号(包含连续变化的大小关系,去掉了原本的数字含义),对位置进行还原
F(a)=b;F(b)=c;F(c)=d=b.
1. argsort
的基本概念:
在 numpy
中,argsort
返回的是一个索引数组,这个数组表示将原始数据排序后的索引位置。具体来说,argsort
会将原始数组排序,并返回排序后每个元素在原始数组中的索引位置。
例如,假设有以下数组:
import numpy as np
arr = np.array([4, 2, 3, 1])
sorted_indices = np.argsort(arr)
sorted_indices
将返回 array([3, 1, 2, 0])
,表示将 arr
排序后,每个元素的位置在原数组中的索引。排序后的数组是 [1, 2, 3, 4]
,所以:
1
在原数组中的索引是3
2
在原数组中的索引是1
3
在原数组中的索引是2
4
在原数组中的索引是0
-
2. 为什么使用两次
argsort
:
在 DECD
函数中,我们使用了两次 argsort
来获取两个不同的排序信息。
第一次 argsort
:排序目标解的目标值
SortedC = np.sort(Costs, axis=0)
SortedI = np.argsort(Costs, axis=0)
SortedC 是对目标解 ,Costs 按每个目标的维度(列)进行排序后的结果,得到的是目标值排序后的数组。
SortedI
是 argsort(Costs, axis=0)
,返回的是原始解数组中每个解的索引,表示这些解在每个目标维度上的排序顺序。