Python

Numpy básico: como invertir arrays de Numpy

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)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: NumPy

Recent Posts

Customer Lifetime Value: la fórmula clásica que todo analista debería dominar

El Customer Lifetime Value (CLV) es, probablemente, la métrica más importante que puede calcular una…

2 días ago

Analytics Lane lanza la versión 1.4 del laboratorio con nuevas herramientas de conversión y modelos avanzados de CLV

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.4, que…

6 días ago

Lanzamos el video de ScoreFlow: crea scorecards de crédito de forma ágil y sin IT

En Analytics Lane seguimos apostando por desarrollar herramientas que simplifiquen el trabajo de analistas y…

1 semana ago

Data Leakage en Credit Scoring: El Error que Invalida tu Modelo

Imagina que construyes un scorecard con un Gini de 0,85. Un resultado extraordinario, muy por…

1 semana ago

This website uses cookies.