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

Actualizar expresslanets a ES Modules con tsx y Vitest

expresslanets es la plantilla de API REST con Express y TypeScript que empezó como una…

4 días ago

Pareto/NBD: cuando el abandono silencioso cambia el CLV

En el artículo del Dashboard vimos que Pareto/NBD aparecía junto a BG/NBD con un ajuste…

6 días ago

Por qué migrar tus proyectos TypeScript a ES Modules en 2026

Durante años, CommonJS (require/module.exports) ha sido la forma por defecto de organizar módulos en Node.js,…

2 semanas ago

Método del codo: interpretación correcta y limitaciones

Cuando usas k-means tienes que decidir algo incómodo de entrada: cuántos grupos, , vas a…

2 semanas ago

Errores comunes al interpretar resultados estadísticos

La estadística no suele fallar en los cálculos: falla en la interpretación. El test está…

3 semanas ago

Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas

Los artículos anteriores de esta serie cubrieron cuatro formas de mirar el valor del cliente:…

3 semanas ago

This website uses cookies.