Come fare la media di una lista di liste in Python?

Problema: Hai una lista di liste e vuoi calcolare la media delle diverse colonne.

Esempio: Data la seguente lista di liste con quattro righe e tre colonne.

data = , , , ]

Vuoi avere i valori medi delle tre colonne:


Ci sono tre metodi che risolvono questo problema. Potete giocare con loro nella shell interattiva e leggere maggiori dettagli qui sotto:

Tabella del contenuto

Metodo 1: Media in Python (Nessuna libreria)

Un semplice one-liner con la comprensione della lista in combinazione con la funzione zip() sulla lista scompattata per trasporre la lista di liste fa il lavoro in Python.

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

Adorate le one-liner di Python? Io di sicuro, ho anche scritto un intero libro su di esso con l’editore di San Francisco NoStarch. Clicca per vedere il libro in una nuova scheda:

Puoi visualizzare l’esecuzione del codice e gli oggetti in memoria di questo codice nel seguente strumento (basta cliccare “Next” per vedere come si svolge un passo del codice).

Metodo 2: Media con la libreria NumPy

Crea un array NumPy dai dati e passalo alla funzione np.average().

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

L’argomento axis della funzione media definisce lungo quale asse volete calcolare il valore medio. Se volete fare la media delle colonne, definite axis=0. Se volete fare la media delle righe, definite axis=1. Se volete fare la media su tutti i valori, saltate questo argomento.

Metodo 3: Libreria di statistiche medie + Map()

Per mostrarvi un’altra alternativa, eccone una che usa la funzione map() e il nostro trucco zip(*data) per trasporre la “matrice” data.

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

La funzione map(function, iterable) applica function ad ogni elemento di iterable. In alternativa, potete anche usare la comprensione della lista come mostrato nel metodo 1 di questo tutorial. Infatti, Guido van Rossum, il creatore di Python e dittatore benevolo di Python per la vita (BDFL), preferisce la comprensione delle liste alla funzione map().

Dove andare da qui?

Basta teoria, facciamo un po’ di pratica!

Per avere successo nella codifica, devi uscire e risolvere problemi reali per persone reali. È così che si può diventare facilmente un guadagnatore a sei cifre. Ed è così che si affinano le abilità di cui si ha veramente bisogno nella pratica. Dopo tutto, a cosa serve imparare la teoria di cui nessuno ha mai bisogno?

I progetti pratici sono il modo in cui affini la tua sega nella codifica!

Vuoi diventare un maestro del codice concentrandoti su progetti pratici che effettivamente ti fanno guadagnare e risolvono problemi per le persone?

Allora diventa uno sviluppatore freelance Python! È il modo migliore di affrontare il compito di migliorare le tue abilità in Python – anche se sei un principiante assoluto.

Partecipa al mio webinar gratuito “Come costruire il tuo Python ad alto reddito” e guarda come ho fatto crescere la mia attività di codifica online e come puoi fare anche tu – dalla comodità di casa tua.

Partecipa subito al webinar gratuito!

Mentre lavorava come ricercatore nei sistemi distribuiti, il Dr. Christian Mayer ha scoperto il suo amore per l’insegnamento agli studenti di informatica.

Per aiutare gli studenti a raggiungere livelli più alti di successo con Python, ha fondato il sito di educazione alla programmazione Finxter.com. È autore del popolare libro di programmazione Python One-Liners (NoStarch 2020), coautore della serie di libri auto-pubblicati Coffee Break Python, appassionato di informatica, freelance e proprietario di uno dei 10 blog Python più grandi al mondo.

Le sue passioni sono scrivere, leggere e programmare. Ma la sua più grande passione è servire gli aspiranti codificatori attraverso Finxter e aiutarli a migliorare le loro abilità. Puoi unirti alla sua accademia gratuita via email qui.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.