У меня есть массив расстояний a = np.array([20.5 ,5.3 ,60.7 ,3.0 ], 'double')
, и мне нужны индексы отсортированного массива (например, [3, 1, 0, 2]
, для a.sort()
). Есть ли функция в Numpy для этого?
Получить исходные индексы отсортированного массива 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])