Una de las tareas básicas que más me preguntan es cómo invertir vectores o matrices. En esta entrada vamos a ver diferentes métodos para invertir arrays de Numpy. Para lo que usaremos el operador []
y el método np.flip()
.
Invertir vectores en Numpy
Como siempre lo primero que tenemos que hacer para invertir un vector en Numpy es importar la librería y un vector para trabajar. En este ejemplo podemos utilizar un vector básico.
import numpy as np arr = np.array([1,2,3,4,5]) arr
array([1, 2, 3, 4, 5])
La manera más rápida de inferir el vector es utilizando el operador []
, escribiendo simplemente
arr[::-1]
array([5, 4, 3, 2, 1])
Como se puede ver el vector que se obtiene ha invertido los valores. El funcionamiento de este método es sencillo, solamente hay que recordar el funcionamiento del operador :
en []
. La forma básica de este operador es arr[start:end:stepsize]
, con lo que crea un nuevo vector con los elementos desde start
hasta el anterior a end
en los pasos indicados en stepsize
. En el caso de que se omita start
los elementos se seleccionarán desde el principio y si se omite end
los elementos finalizarán en el último.
Otro método para invertir arrays de Numpy es el método np.flip()
.
np.flip(arr)
array([5, 4, 3, 2, 1])
Invertir matrices en Numpy
Al igual que en el caso de los vectores, para invertir una matriz primero hemos de crear o importar una. Por un lado se puede conseguir con el operador []
arr2D = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]]) arr2D[::-1]
array([[31, 32, 33], [21, 22, 23], [11, 12, 13]])
Alternativamente también se puede probar con el método np.flip()
np.flip(arr2D)
array([[31, 32, 33], [21, 22, 23], [11, 12, 13]])
Por otro lado si estamos interesados en invertir las columnas también se puede utilizar el operador []
. Pero en este caso hay que indicar que use las columnas
arr2D[:,::-1]
array([[13, 12, 11], [23, 22, 21], [33, 32, 31]])
Finalmente el método np.flip()
dispone de la opción axis
para indicar si se desea invertir la matriz por filas o columnas. Por defecto el valor es 0, lo que indica invertir filas, si queremos invertir por columnas se puede indicar con el valor 1.
np.flip(arr2D, axis=1)
array([[13, 12, 11], [23, 22, 21], [33, 32, 31]])
Invertir solamente una fila o columna
Si solamente necesitamos invertir una o varias filas se puede indicar que solamente opere sobre estas. Aunque en este caso hay que recordar guardar el resultado solamente en la columna o columnas correspondientes.
arr2D[:, 1] = arr2D[::-1, 1] arr2D
array([[11, 32, 13], [21, 22, 23], [31, 12, 33]])
Finalmente, invertir una sola columna es un proceso completamente análogo.
arr2D[1] = arr2D[1, ::-1] arr2D
array([[11, 32, 13], [23, 22, 21], [31, 12, 33]])
Conclusiones
En esta entrada se ha visto cómo invertir arrays de Numpy, tanto vectores como matrices. Unas operaciones que son muy habituales y es importante conocerlas bien para mejorar nuestra productividad.
Imágenes: Pixabay (Marit Welker)
Deja una respuesta