获取排序后Numpy数组的原始索引

49 投票
2 回答
35510 浏览
提问于 2025-04-17 01:45

我有一个距离的数组 a = np.array([20.5 ,5.3 ,60.7 ,3.0 ], 'double'),我想要这个数组排序后元素的索引位置,比如排序后得到的索引是 [3, 1, 0, 2],这是针对 a.sort() 的结果。请问在Numpy里有没有什么函数可以做到这一点?

2 个回答

13

这里有一个例子,供大家参考和方便使用:

# 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])
57

是的,有一个叫做 x = numpy.argsort(a) 的函数,或者你也可以用 x = numpy.ndarray.argsort(a) 这个方法。它正好可以满足你的需求。你还可以在一个 ndarray 对象上直接调用 argsort,像这样:a.argsort()

这里有一个文档链接,可以了解更多信息: http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html#numpy.argsort

撰写回答