API · NumPy
Python numpy.argmax()
La función numpy.argmax() devuelve los índices de valores con los valores más altos de el array NumPy dada.
En esta página
Python NumPy numpy.argmax() devuelve el índice de un valor máximo de un array; no devuelve el valor en sí. Usa ese índice para obtener el valor o elige un axis para obtener un índice por cada segmento. Si varios valores comparten el máximo, devuelve la primera aparición.
Cómo selecciona numpy.argmax() el índice de un valor máximo
Con axis=None, su valor predeterminado, numpy.argmax() busca en el array como si sus elementos formaran una única secuencia aplanada. Por eso, si la entrada es multidimensional, el índice devuelto es una posición dentro de esa secuencia. Si se especifica un eje, la búsqueda se realiza a lo largo de esa dimensión y devuelve índices para los segmentos restantes.
Sintaxis y parámetros
La firma de la función es numpy.argmax(a, axis=None, out=None). El argumento a es el array de entrada o un objeto similar a un array. axis selecciona la dimensión en la que se realiza la búsqueda; si se omite o se establece en None, primero se aplana la entrada. En un array bidimensional, axis=0 busca hacia abajo en cada columna y devuelve índices de fila, mientras que axis=1 busca a lo largo de cada fila y devuelve índices de columna. El eje seleccionado se elimina de la forma del resultado.
El argumento opcional out es un array que recibe el resultado. Su forma debe coincidir con la forma del resultado y su tipo de datos debe poder representar los índices devueltos. La función devuelve el índice o el array de índices; usa esas posiciones para acceder a los valores máximos correspondientes.
Encontrar el índice de un valor máximo en arrays unidimensionales y multidimensionales
Ejecuta este ejemplo:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
import numpy as np
a = np.array([2, 6, 1, 5])
index = np.argmax(a)
print(index)
print(a[index])
1
6
Aquí, el valor máximo es 6 y su posición es 1, porque los índices de NumPy empiezan en cero. En un array multidimensional, el comportamiento predeterminado sigue devolviendo una única posición en el array aplanado, no un par de coordenadas de fila y columna. Si necesitas las coordenadas en la forma original, convierte esa posición con numpy.unravel_index.
import numpy as np
a = np.array([[2, 1, 6],
[7, 4, 5]])
index = np.argmax(a)
print(index)
print(np.unravel_index(index, a.shape))
3
(np.int64(1), np.int64(0))
La posición 3 en el array aplanado corresponde a la fila 1 y la columna 0, donde se encuentra el valor 7.
Elegir un eje para encontrar índices en cada segmento
En un array bidimensional con forma (2, 3), axis=0 reduce la dimensión de las filas: la salida contiene un índice de fila por cada columna. axis=1 reduce la dimensión de las columnas: la salida contiene un índice de columna por cada fila. Estos son índices dentro de cada segmento en el que se realiza la búsqueda, no posiciones en el array original aplanado.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
import numpy as np
a = np.array([[2, 1, 6],
[7, 4, 5]])
print(np.argmax(a, axis=0))
print(np.argmax(a, axis=1))
[1 1 0]
[2 0]
Por ejemplo, el elemento más grande de la primera columna es 7, en el índice de fila 1; el elemento más grande de la primera fila es 6, en el índice de columna 2.
Resolver empates y usar el índice devuelto
Si el valor máximo aparece más de una vez, numpy.argmax() devuelve la primera posición coincidente en el orden de búsqueda. Cuando se especifica un eje, esta regla se aplica de forma independiente a cada segmento. El siguiente ejemplo unidimensional muestra la posición devuelta y el valor que se encuentra en ella.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
import numpy as np
a = np.array([2, 6, 1, 6])
index = np.argmax(a)
print(index)
print(a[index])
1
6
Ambos valores máximos son 6, pero el índice 1 aparece antes que el índice 3. En una búsqueda multidimensional sin eje, «primero» se refiere al orden del array aplanado; con un eje, se refiere al orden dentro de cada segmento.
Escribir el resultado en out
Usa out cuando quieras escribir el resultado en un array existente. Su forma debe corresponderse con la del resultado: un array de forma escalar sirve para un resultado escalar, mientras que una búsqueda con un eje requiere un array con la forma de salida. Elige un tipo de datos entero que pueda representar los índices. La llamada también devuelve el mismo resultado que escribe en out.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
import numpy as np
a = np.array([[2, 1, 6],
[7, 4, 5]])
result = np.empty((), dtype=np.intp)
np.argmax(a, out=result)
print(result)
3
En esta búsqueda predeterminada, el resultado tiene forma escalar, por lo que result es un array de cero dimensiones. Si añades un eje, asigna a out la forma del array de índices resultante.