【问题标题】:Recover permutation of a vector恢复向量的排列
【发布时间】:2019-06-28 18:28:43
【问题描述】:

在 numpy 中,我如何有效地恢复排序算法对向量应用的排列,以便在结果向量中的每个索引处,我都有一个整数表示原始向量中的项目在应用程序后投影到的索引排序算法。

>>>import numpy as np

>>> my_vector = np.random.random_integers(1,50,size=5)
>>> my_vector
array([23, 20, 33, 38, 27])

>>> my_v_sorted = np.sort(my_vector)
>>> my_v_sorted
array([20, 23, 27, 33, 38])

>>> what_i_want = np.array([1,0,4,2,3])

无论我是否真的需要排序来执行此操作,我只想将向量的条目映射到排序向量中的结果索引,干杯!

【问题讨论】:

  • 你看过numpy.argsort吗?
  • what_i_want = np.array([1,0,4,5,3]) 里面应该有2 吗?没有5
  • 查看argsort的argsort。

标签: python numpy sorting permutation


【解决方案1】:

您可以使用np.argsort()

import numpy as np

my_vector = np.array([23, 20, 33, 38, 27])

my_v_sorted = np.sort(my_vector)

what_i_want = np.argsort(my_vector)

这将为您提供以下输出

>>> my_v_sorted
>>> array([20, 23, 27, 33, 38])

>>> what_i_want
>>> array([1, 0, 4, 2, 3])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2018-10-16
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 2016-03-06
    相关资源
    最近更新 更多