Pregunta Obtenga índices originales de una matriz Numpy ordenada


Tengo una variedad de distancias a = np.array([20.5 ,5.3 ,60.7 ,3.0 ], 'double') y necesito los índices de la matriz ordenada (por ejemplo [3, 1, 0, 2], para a.sort()) ¿Hay una función en Numpy para hacer eso?


32
2017-09-07 23:18


origen


Respuestas:


Sí, está el x = numpy.argsort(a) función o x = numpy.ndarray.argsort(a) método. Hace exactamente lo que estás pidiendo. También puedes llamar argsort como un método en una ndarray objeto como tal: a.argsort().

Aquí hay un enlace a la documentación: http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html#numpy.argsort


45
2017-09-07 23:25



Aquí hay un ejemplo, para referencia y conveniencia:

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

2
2017-09-08 14:11