【问题标题】:Get original indices of a sorted Numpy array获取已排序 Numpy 数组的原始索引
【发布时间】:2017-09-08 22:11:57
【问题描述】:

我有一个距离数组a = np.array([20.5 ,5.3 ,60.7 ,3.0 ], 'double'),我需要排序数组的索引(例如[3, 1, 0, 2],对于a.sort())。 Numpy 中有一个函数可以做到这一点吗?

【问题讨论】:

  • 请查看我在stackoverflow.com/questions/53442599/… 中的解决方案,该解决方案不特定于numpy,它还允许反向(降序)排序,而无需在排序后反转数组,并指定key 函数.

标签: python numpy


【解决方案1】:

是的,有x = numpy.argsort(a) 函数或x = numpy.ndarray.argsort(a) 方法。它完全符合您的要求。您还可以将argsort 作为ndarray 对象上的方法调用,如下所示:a.argsort()

这是文档的链接:http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html#numpy.argsort

【讨论】:

    【解决方案2】:

    这里是一个例子,供参考和方便:

    # create an array
    a = np.array([5,2,3])
    
    # np.sort - returns the array, sorted
    np.sort(a)
    >>> array([2, 3, 5])
    
    # argsort - returns the original indexes of the sorted array
    np.argsort(a)
    >>> array([1, 2, 0])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-02
      • 2020-12-20
      • 1970-01-01
      • 2015-09-04
      • 2012-02-29
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      相关资源
      最近更新 更多