【问题标题】:How do I reverse argsort to point to the original unsorted array?如何反转 argsort 以指向原始未排序数组?
【发布时间】:2021-12-11 10:04:44
【问题描述】:

我对自己没有自己解决这个问题感到恼火;这很可能是微不足道的。但无论如何,假设我有一个未排序的数组,以及一个用于对其进行排序的 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]

我怎样才能最容易地从fap 中确定af

【问题讨论】:

  • 已经完成(我认为)非常感谢。

标签: python numpy sorting


【解决方案1】:

你不需要反转任何东西。请记住,pa 的索引,对应于b 的每个元素。 fth 元素 b 来自 a 索引 fth 元素 p:

a[p[f]]

换句话说,

af = p[f]

【讨论】:

  • 天哪,是的!非常感谢。好吧,至少我认为它是微不足道的......
猜你喜欢
  • 2012-01-16
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
相关资源
最近更新 更多