【问题标题】:Return order of NumPy arrayNumPy 数组的返回顺序
【发布时间】:2012-03-31 09:24:12
【问题描述】:

我正在尝试返回一个数组,该数组具有数组中每个值的等级。例如,给定下面的数组:

import numpy as np
arr1 = np.array([4, 5, 3, 1])

我想返回数组:

array([2, 3, 1, 0])

使得返回数组中的值表示数组的升序(即返回数组中的值表示哪个最大)。使用 argsort,我只能告诉值应该如何重新排序:

arr1.argsort()
array([3, 2, 0, 1])

如果不清楚,请告诉我。

【问题讨论】:

标签: python arrays numpy sorting


【解决方案1】:

可能有更好的方法,但我总是这样做argsort().argsort()

>>> import numpy as np
>>> a = np.random.random(5)
>>> a
array([ 0.54254555,  0.4547267 ,  0.50008037,  0.20388227,  0.13725801])
>>> a.argsort().argsort()
array([4, 2, 3, 1, 0])

【讨论】:

    【解决方案2】:

    假设 [2,3,0,1] 是 [2,3,1,0] 的拼写错误,您可以使用 lexsort

    >>> import numpy as np
    >>> arr1 = np.array([4,5,3,1])
    >>> np.lexsort((np.arange(len(arr1)), arr1.argsort()))
    array([2, 3, 1, 0])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多