У меня есть массив расстояний a = np.array([20.5 ,5.3 ,60.7 ,3.0 ], 'double'), и мне нужны индексы отсортированного массива (например, [3, 1, 0, 2], для a.sort()).Есть ли в Numpy функция для этого?
a = np.array([20.5 ,5.3 ,60.7 ,3.0 ], 'double')
[3, 1, 0, 2]
a.sort()
Да, есть функция x = numpy.argsort(a) или метод x = numpy.ndarray.argsort(a). Это именно то, что вы просите. Вы также можете вызвать argsort как метод для объекта ndarray следующим образом: a.argsort().
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
Вот пример, для справки и удобства:
# 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])