Cómo promediar una lista de listas en Python?

Problema: Tienes una lista de listas y quieres calcular la media de las diferentes columnas.

Ejemplo: Dada la siguiente lista de listas con cuatro filas y tres columnas.

data = , , , ]

Se quieren tener los valores medios de las tres columnas:


Hay tres métodos que resuelven este problema. Puedes jugar con ellos en el shell interactivo y leer más detalles a continuación:

Tabla de contenidos

Método 1: Promedio en Python (Sin Biblioteca)

Un simple one-liner con comprensión de listas en combinación con la función zip() sobre la lista descompuesta para transponer la lista de listas hace el trabajo en Python.

data = , , , ]# Method 1: Pure Pythonres = print(res)# 

¿Amas los one-liners de Python? A mí me encantan; incluso he escrito un libro entero sobre ello con la editorial de San Francisco NoStarch. Haz clic para ver el libro en una nueva pestaña:

Puedes visualizar la ejecución del código y los objetos de memoria de este código en la siguiente herramienta (sólo tienes que hacer clic en «Siguiente» para ver cómo se desarrolla un paso del código).

Método 2: Promedio con la librería NumPy

Creas un array NumPy con los datos y lo pasas a la función np.average().

data = , , , ]# Method 2: NumPyimport numpy as npa = np.array(data)res = np.average(a, axis=0)print(res)# 

El argumento axis de la función average define a lo largo de qué eje quieres calcular el valor medio. Si desea promediar columnas, defina axis=0. Si desea promediar filas, defina axis=1. Si desea promediar todos los valores, omita este argumento.

Método 3: Biblioteca de estadísticas de la media + Map()

Sólo para mostrarte otra alternativa, aquí hay una que utiliza la función map() y nuestro truco zip(*data) para transponer la «matriz» data.

data = , , , ]# Method 3: Statistics + Map()import statisticsres = map(statistics.mean, zip(*data))print(list(res))# 

La función map(function, iterable) aplica function a cada elemento de iterable. Como alternativa, también puede utilizar la comprensión de la lista como se muestra en el método 1 de este tutorial. De hecho, Guido van Rossum, el creador de Python y dictador benevolente de Python para la vida (BDFL), prefiere la comprensión de listas sobre la función map().

¿A dónde ir desde aquí?

¡Basta de teoría, vamos a practicar!

Para tener éxito en la codificación, tienes que salir y resolver problemas reales para la gente real. Así es como puedes llegar a ganar seis cifras fácilmente. Y así es como se pulen las habilidades que realmente necesitas en la práctica. Después de todo, ¿de qué sirve aprender la teoría que nadie necesita?

¡Los proyectos de práctica son la forma de afilar tu sierra en la codificación!

¿Quieres convertirte en un maestro del código centrándote en proyectos de código prácticos que realmente te hagan ganar dinero y resuelvan problemas para la gente?

¡Entonces conviértete en un desarrollador freelance de Python! Es la mejor manera de abordar la tarea de mejorar tus habilidades en Python-incluso si eres un completo principiante.

Entra en mi webinar gratuito «Cómo construir tu habilidad de altos ingresos en Python» y mira cómo hice crecer mi negocio de codificación en línea y cómo puedes, también-desde la comodidad de tu propia casa.

¡Entra en el webinar gratuito ahora!

Mientras trabajaba como investigador en sistemas distribuidos, el Dr. Christian Mayer encontró su amor por enseñar a los estudiantes de ciencias de la computación.

Para ayudar a los estudiantes a alcanzar mayores niveles de éxito en Python, fundó el sitio web de educación en programación Finxter.com. Es autor del popular libro de programación Python One-Liners (NoStarch 2020), coautor de la serie Coffee Break Python de libros autopublicados, entusiasta de las ciencias de la computación, trabajador independiente y propietario de uno de los 10 blogs de Python más grandes del mundo.

Sus pasiones son escribir, leer y codificar. Pero su mayor pasión es servir a los aspirantes a codificadores a través de Finxter y ayudarles a potenciar sus habilidades. Puedes unirte a su academia de correo electrónico gratuito aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.