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

Curiosidad: El “bug”, la polilla y la leyenda de Grace Hopper

Cualquiera que programe usa la palabra bug a diario para referirse a un fallo en…

3 días ago

BG/BB: el modelo de CLV para compras en períodos discretos

Los dos artículos anteriores de la serie cubrieron BG/NBD, el modelo para negocios donde el…

5 días ago

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

1 semana ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

2 semanas ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

2 semanas ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

3 semanas ago

This website uses cookies.