logo

numpy.argsort() en Python

El módulo NumPy proporciona una función argsort(), devuelve los índices que ordenarían una matriz.

El módulo NumPy proporciona una función para realizar una clasificación indirecta junto con el eje dado con la ayuda del algoritmo especificado por la palabra clave. Esta función devuelve una matriz de índices de la misma forma que 'a', lo que ordenaría la matriz.

Sintaxis

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

Parámetros

Estos son los siguientes parámetros en la función numpy.argsort():

contar sql distinto

a: tipo matriz

Este parámetro define la matriz fuente que queremos ordenar.

eje: int o Ninguno (opcional)

Este parámetro define el eje a lo largo del cual se realiza la clasificación. Por defecto, el eje es -1. Si configuramos este parámetro en Ninguno, se utiliza la matriz aplanada.

tipo: {'quicksort','mergesort','heapsort','stable'}(opcional)

Este parámetro define el algoritmo de clasificación. Por defecto, el algoritmo es ordenación rápida . Ambos fusionar y estable están usando la clasificación por tiempo bajo las sábanas. La implementación real variará según el tipo de datos. El fusionar La opción se conserva por motivos de compatibilidad con versiones anteriores.

milivecriclet

orden: str o lista de str (opcional)

Si 'a' es una matriz con campos definidos, este argumento especifica qué campos comparar primero, segundo, etc. El campo único se puede especificar como una cadena 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 de letra, para romper los vínculos.

Devuelve: index_array: ndarray, int

Esta función devuelve una matriz de índices que ordenan 'a' junto con el eje especificado. Si 'a' es 1-D, a[index_array] produce una 'a' ordenada. Más generalmente, np.take_along_axis(arr1, index_array, eje=eje) siempre produce la 'a' ordenada, independientemente de la dimensionalidad.

Ejemplo 1: np.argsort()

 import numpy as np a=np.array([456,11,63]) a b=np.argsort(a) b 

En el código anterior

  • Hemos importado numpy con nombre de alias np.
  • Hemos creado una matriz 'a' usando la función np.array().
  • Hemos declarado la variable 'b' y hemos asignado el valor devuelto de la función np.argsort().
  • Hemos pasado la matriz 'a' en la función.
  • Por último, intentamos imprimir el valor de b.

En la salida, se ha mostrado un ndarray que contiene los índices (indica la posición del elemento para la matriz ordenada) y dtype.

tostring java

Producción:

 array([456, 11, 63]) array([1, 2, 0], dtype=int64) 

Ejemplo 2: para una matriz 2D (ordena a lo largo del primer eje (hacia abajo))

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices 

Producción:

 array([[0, 1], [1, 0]], dtype=int64) 

Ejemplo 3: para matriz 2-D (alternativa de eje = 0)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices np.take_along_axis(a, indices, axis=0) 

En el código anterior

  • Hemos importado numpy con nombre de alias np.
  • Hemos creado una matriz 2-D 'a' usando la función np.array().
  • Hemos declarado índices de variables y asignado el valor devuelto de la función np.argsort().
  • Hemos pasado la matriz 2-D 'a' y el eje como 0.
  • A continuación, utilizamos la función take_along_axis() y pasamos la matriz, los índices y el eje de origen.
  • Esta función ha devuelto la matriz 2D ordenada.

En el resultado, se muestra una matriz 2D con elementos ordenados.

Producción:

 array([[0, 2], [3, 5]]) 

Ejemplo 4: para una matriz 2D (ordena a lo largo del último eje (a lo ancho))

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices 

Producción:

 array([[0, 1], [1, 0]], dtype=int64) 

Ejemplo 5: para matriz 2-D (alternativa de eje = 1)

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=1) indices np.take_along_axis(a, indices, axis=1) 

Producción:

 array([[0, 2], [3, 5]]) 

Ejemplo 6: para matriz N-D

 import numpy as np a = np.array([[0, 5], [3, 2]]) indices = np.unravel_index(np.argsort(a, axis=None), a.shape) indices a[indices] # same as np.sort(a, axis=None) 

Producción:

cadena.valor de java
 (array([0, 1, 1, 0], dtype=int64), array([0, 1, 0, 1], dtype=int64)) array([0, 2, 3, 5]) 

En el código anterior

  • Hemos importado numpy con nombre de alias np.
  • Hemos creado una matriz 2-D 'a' usando la función np.array().
  • Hemos declarado una variable 'índices' y hemos asignado el valor devuelto de la función np.unravel_index().
  • Hemos pasado la función np.argsort() y la forma de la matriz 'a'.
  • Hemos pasado la matriz 2-D 'a' y el eje como 1 en la función argsort().
  • A continuación, intentamos imprimir el valor de los índices y a[índices].

En el resultado, se muestra una matriz N-D con elementos ordenados.

Ejemplo 7: Ordenar con claves

 import numpy as np a= np.array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) a b="np.argsort(a," order="(&apos;x&apos;,&apos;y&apos;))" c="np.argsort(a," < pre> <p> <strong>Output:</strong> </p> <pre> array([(0, 5), (3, 2)], dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]) array([0, 1], dtype="int64)" array([1, 0], < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created a 2-D array &apos;a&apos; using np.array() function with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')].< li> <li>We have declared the variables &apos;b&apos; and &apos;c&apos; and assigned the returned value of np.argsort() function.</li> <li>We have passed the array &apos;a&apos; and order as an argument in the function.</li> <li>Lastly, we tried to print the value of &apos;b&apos; and &apos;c&apos;.</li> </i4'),></li></ul> <p>In the output, a sorted array has been shown with dtype=[(&apos;x&apos;, &apos; <i4'), ('y', ' <i4')]< p> <hr></i4'),></p></i4'),></pre></i4'),>