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().
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])
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]])
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]])
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)
El Customer Lifetime Value (CLV) es, probablemente, la métrica más importante que puede calcular una…
Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.4, que…
Hemos llegado a la sexta entrega de la serie. Si las cuatro primeras fueron las…
En Analytics Lane seguimos apostando por desarrollar herramientas que simplifiquen el trabajo de analistas y…
Imagina que construyes un scorecard con un Gini de 0,85. Un resultado extraordinario, muy por…
En las cuatro entregas anteriores recorrimos los disparates más folclóricos del género: faldas que predicen…
This website uses cookies.