获取排序后Numpy数组的原始索引
我有一个距离的数组 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