You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反转argsort的结果,将排序数组的索引映射回原未排序数组

求解思路与实现

核心原理

numpy的argsort()返回的索引数组p的定义是:排序后数组b的第i个元素,在原数组a中的索引为p[i],即等式b[i] = a[p[i]]恒成立。

最简实现

你需要的af可以直接通过对p按f索引取值得到:

import numpy as np
# 原有变量定义
a = np.array([83, 75, 60, 80, 20,  6,  37, 81,  7, 21])
p = a.argsort()
f = [0, 1, 2, 3, 6, 7]
# 计算目标索引
af = p[f]
# 验证输出:[5 8 4 9 1 3],和预期结果完全匹配
print(af)

说明

该方法不需要额外生成逆排列数组,时间复杂度和空间复杂度都是O(len(f)),是目前最高效的实现方式。

内容的提问来源于stack exchange,提问作者Alasdair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:15:04