numpy.argsort(a, axis=-1, kind=None, order=None)[source]

Devuelve los índices que ordenarían array.

Realice una ordenación indirecta a lo largo del eje dado utilizando el algoritmo especificado por el kind palabra clave. Devuelve un array de índices de la misma forma que a que indexan los datos a lo largo del eje dado en orden ordenado.

Parámetros
aarray_like

Matriz para ordenar.

axisint or None, optional

Eje por el que ordenar. El valor predeterminado es -1 (el último eje). Si ninguno, el aplanado array se utiliza.

kind‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’, optional

Algoritmo de clasificación. El valor predeterminado es ‘clasificación rápida’. Tenga en cuenta que tanto ‘estable’ como ‘mergesort’ usan timsort oculto y, en general, la implementación real variará con el tipo de datos. La opción ‘mergesort’ se conserva para compatibilidad con versiones anteriores.

Modificado en la versión 1.15.0 .: Se agregó la opción ‘estable’.

orderstr or list of str, optional

Cuando a es un array con los campos definidos, este argumento especifica qué campos comparar primero, segundo, etc. Un solo campo se puede especificar como un string, y no es necesario especificar todos los campos, pero los campos no especificados se seguirán utilizando, en el orden en que aparecen en el tipo d, para romper los empates.

Devoluciones
index_arrayndarray, int

Matriz de índices de ese tipo a a lo largo del especificado axis. Si a es unidimensional, a[index_array] produce un ordenado a. Más generalmente, np.take_along_axis(a, index_array, axis=axis) siempre rinde el ordenado a, independientemente de la dimensionalidad.

Ver también

sort

Describe los algoritmos de clasificación utilizados.

lexsort

Ordenación estable indirecta con múltiples keys.

ndarray.sort

Orden en el lugar.

argpartition

Ordenamiento parcial indirecto.

take_along_axis

Solicitar index_array de argsort a un array como si llamara a sort.

Notas

Ver sort para obtener notas sobre los diferentes algoritmos de clasificación.

A partir de NumPy 1.4.0 argsort funciona con matrices reales / complejas que contienen valores nan. El orden de clasificación mejorado está documentado en sort.

Ejemplos de

Unidimensional array:

>>> x = np.array([3,1,2])>>> np.argsort(x)
array([1,2,0])

Bidimensional array:

>>> x = np.array([[0,3],[2,2]])>>> x
array([[0,3],[2,2]])
>>> ind = np.argsort(x, axis=0)# sorts along first axis (down)>>> ind
array([[0,1],[1,0]])>>> np.take_along_axis(x, ind, axis=0)# same as np.sort(x, axis=0)
array([[0,2],[2,3]])
>>> ind = np.argsort(x, axis=1)# sorts along last axis (across)>>> ind
array([[0,1],[0,1]])>>> np.take_along_axis(x, ind, axis=1)# same as np.sort(x, axis=1)
array([[0,3],[2,2]])

Índices de los elementos ordenados de una dimensión N array:

>>> ind = np.unravel_index(np.argsort(x, axis=None), x.shape)>>> ind
(array([0,1,1,0]), array([0,0,1,1]))>>> x[ind]# same as np.sort(x, axis=None)
array([0,2,2,3])

Ordenar con keys:

>>> x = np.array([(1,0),(0,1)], dtype=[('x','),('y',')])>>> x
array([(1,0),(0,1)],
      dtype=[('x','),('y',')])
>>> np.argsort(x, order=('x','y'))
array([1,0])
>>> np.argsort(x, order=('y','x'))
array([0,1])