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