HOWTO · NumPy

Cómo invertir el orden de un array de NumPy en Python

Hay tres métodos principales que se pueden usar para revertir un array NumPy en Python, el método Basic Slicing, la función numpy.flipud() y la función numpy.flip().

En esta página

Para invertir el orden de los elementos de un array de NumPy en Python, puedes usar el corte básico [::-1], numpy.flipud() o numpy.flip(). El corte es una forma concisa de invertir un array unidimensional y devuelve una vista. numpy.flipud() invierte las filas a lo largo del eje 0, mientras que numpy.flip() permite invertir un eje concreto o todos los ejes. Los ejemplos siguientes muestran las diferencias entre sus resultados.

Invertir un array de NumPy con el método de corte básico en Python

En un array unidimensional, array[::-1] selecciona los elementos desde el final hasta el principio, con un paso de -1. 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

array = np.array([1, 2, 3, 4, 5])
reverse = array[::-1]
print(reverse)
[5 4 3 2 1]

El corte es una vista que hace referencia a los mismos datos que array; no crea una copia independiente. Por eso, asignar un valor a través de reverse también cambia el elemento correspondiente de array. Si necesitas mantener los valores originales independientes, crea una copia con array[::-1].copy(). Este método resulta útil cuando quieres invertir un array unidimensional con una expresión breve y te sirve que el resultado sea una vista. En un array multidimensional, la misma expresión invierte solo el primer eje; si necesitas indicar qué dimensión cambiar, usa una función que permita especificar el eje.

Invertir un array de NumPy con la función numpy.flipud() en Python

numpy.flipud() invierte un array a lo largo del eje 0. En un array unidimensional, el eje 0 es el único, así que los valores quedan en orden inverso. En un array bidimensional, el eje 0 corresponde a las filas: cambia el orden de las filas, pero los valores dentro de cada fila conservan su orden. La documentación de NumPy sobre numpy.flipud() describe esta función.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

array = np.array([[1, 2], [3, 4]])
print(np.flipud(array))
[[3 4]
 [1 2]]

Elige numpy.flipud() cuando quieras invertir el eje 0, especialmente en matrices, donde eso significa cambiar el orden de las filas. En un array unidimensional, es una alternativa legible al corte; para invertir otro eje, usa numpy.flip() e indica ese eje explícitamente.

Invertir un array de NumPy con la función numpy.flip() en Python

numpy.flip() invierte los elementos a lo largo del eje que indiques. En un array bidimensional, axis=1 invierte las columnas dentro de cada fila. Si omites axis, su valor predeterminado es None, que invierte todos los ejes. Así cambia tanto el orden de las filas como el orden de los elementos dentro de cada fila; el array no se aplana para invertir una sola secuencia. Consulta la documentación de NumPy sobre numpy.flip().

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

import numpy as np

array = np.array([[1, 2], [3, 4]])
print(np.flip(array, axis=1))
print(np.flip(array))
[[2 1]
 [4 3]]
[[4 3]
 [2 1]]

Usa numpy.flip(array, axis=0) para invertir las filas, axis=1 para invertir las columnas de un array bidimensional o bien omite axis para invertir todas las dimensiones. En un array unidimensional, omitir axis invierte su único eje. En la práctica, elige el corte para una expresión breve con arrays unidimensionales, numpy.flipud() cuando necesites invertir específicamente el eje 0 y numpy.flip() cuando quieras indicar un eje o invertirlos todos. Estas operaciones cambian el orden de los elementos a lo largo de las dimensiones; no ordenan los valores ni cambian la forma del array.