为什么经过两次np.argsort就能得到当前位置的值在整体中的排序?

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 按每个目标的维度(列)进行排序后的结果,得到的是目标值排序后的数组。

SortedIargsort(Costs, axis=0),返回的是原始解数组中每个解的索引,表示这些解在每个目标维度上的排序顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值