Python

Numpy básico: aplicar una función sobre una fila o columna de una Array de Numpy

Al tener una matriz de Numpy en memoria puede darse la situación de que sea necesario calcular una función sobre los elementos de una fila o columnas. Por ejemplo, algo tan básico como sumar todos los elementos por columna. En estas situaciones se puede utilizar la función np.apply_along_axis() , con la que se puede aplicar una función sobre una fila o columna de una Array de Numpy.

Para trabajar en el resto de la entrada se va a crear una matriz de 3 por 3 con la que se podrá probar lo trucos explicados.

import numpy as np

matrix = np.arange(1, 10).reshape(3,3)
matrix
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

La función np.apply_along_axis()

La función np.apply_along_axis() permite aplicar una función sobre una de las dimisiones de un Array de Numpy. Por lo que es una herramienta con muchas posibilidades. La función tiene tres parámetros, en el primero se indica la función que se desea aplicar, en la segunda el eje sobre el que se desea aplicar la función y finalmente el objeto de Numpy. Obteniéndose como salida de la función un Array de Numpy con un eje menos que el original.

Por ejemplo, para sumar las columnas de una matriz se puede escribir en Python la siguiente línea de código.

np.apply_along_axis(sum, 0, matrix)
array([12, 15, 18])

Es fácil comprobar que el resultado es correcto. Como se puede ver en el ejemplo el eje se indica de forma numérica, en el caso de las matrices para operar sobre las columnas se utiliza 0 y 1 para operar sobre las filas. Así para sumar sobre una las columnas solamente se tiene que cambiar el segundo parámetro.

np.apply_along_axis(sum, 1, matrix)
array([ 6, 15, 24])

Las funciones a utilizar en np.apply_along_axis()

Por lo visto np.apply_along_axis() es una herramienta muy interesante. Pero ¿qué funciones se pueden utilizar como entrada? Se puede utilizar cualquier función de Python que admite como entrada un vector unidimensional y devuelva un escalar. Incluyente tanto las funciones nativas del lenguaje como cualquier que se puede escribir. Por lo que se pueden utilizar la mayoría de las funciones estadísticas para obtener la media, la desviación estándar, los máximos o mínimos, etc.

Utilizar np.apply_along_axis() con otros tipos de objetos

Otro punto importante es que, en el caso de tener una matriz en una lista de listas de Python, no es necesario convertir esta en un Array de Numpy antes de poder trabajar con ella. np.apply_along_axis() acepta como entrada cualquier tipo de objeto que se puede convertir a un Array de Numpy, realizando la conversión de tipos internamente.

np.apply_along_axis(sum, 1, [[1,2],[2,3]])
array([3, 5])

Conclusiones

Cuando se tiene una matriz y es necesario obtener los estadísticos de las filas o columnas la función np.apply_along_axis() es de gran ayudar. Ya que permite aplicar una función sobre una fila o columna de una Array de Numpy o cualquier otro objeto que se pueda convertir a este. Evitando de este modo la necesidad de usar bucles o el método map que pueden ser un poco más complejos para principiantes.

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: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios

En ciencia de datos y estadística, los promedios y porcentajes son herramientas fundamentales para resumir…

22 horas ago

Copias de seguridad automáticas en SQL Server con rotación de archivos

Las bases de datos son el corazón de casi cualquier sistema de información moderno. Ya…

3 días ago

Curiosidad: La Ley de Twyman y la trampa de los datos “interesantes”

En ciencia de datos, pocas cosas llaman más la atención de los científicos de datos…

1 semana ago

Cómo calcular el tamaño de la muestra para encuestas

Calcular adecuadamente el tamaño de la muestra es una parte esencial en el diseño de…

1 semana ago

Curiosidad: El origen del análisis exploratorio de datos y el papel de John Tukey

Hoy en día, cuando pensamos en ciencia de datos, lo primero que nos viene a…

2 semanas ago

Cómo extender el tamaño de un disco en Rocky Linux 9 usando growpart y LVM

Ampliar el espacio de almacenamiento en un sistema Linux es una tarea habitual y crítica…

2 semanas ago

This website uses cookies.