python - 如何反转 argsort 以指向原始未排序数组?
问题描述
我对自己没有自己解决这个问题感到恼火;这很可能是微不足道的。但无论如何,假设我有一个未排序的数组和一个用于对其进行排序的 argsort:
a = array([83, 75, 60, 80, 20, 6, 37, 81, 7, 21])
p = a.argsort()
b = a[p]
所以数组b
是数组的排序版本a
。现在我有一个从排序列表中选择某些值的函数;假设该函数返回列表
f = [0, 1, 2, 3, 6, 7]
这些是已排序数组的索引b
。但是我如何“反转”排序,以便我可以获得指向相应值的索引a
?在这种情况下,我们有
b[f]
[ 6 7 20 21 75 80]
和相应的索引a
是
af = [5, 8, 4, 9, 1, 3]
我怎样才能最容易地从af
和f
确定?a
p
解决方案
你不需要反转任何东西。请记住,这是与 的每个元素对应p
的索引。的第 th 元素来自于的第 th 元素的索引:a
b
f
b
a
f
p
a[p[f]]
换句话说,
af = p[f]
推荐阅读
- javascript - Angular 应用程序无法识别 StencilJs 自定义 Web 组件的全局样式
- encoding - DBI(数据总线反转)是否保存熵?
- python - 如何解决这个显示正确输出的问题?
- gatsby - 动态引用不在 Gatsby 中的静态目录中的图像
- php - npm - 主错误,未找到模块 - 新的 laravel (8) 应用程序
- postgresql - Postgres:如何将 JSONB 值转换为数字
- sql - SQL 按唯一值过滤文本字符串
- oracle - 为什么命令 conn / as sysdba 在 sqlplus 中抛出错误?
- javascript - 调度拖尾事件
- sql - 无法解决错误消息 Msg 241, Level 16, State 1, Line 1 从字符串转换日期和/或时间时转换失败