Cum se calculează media unei liste de liste în Python?

Problemă: Aveți o listă de liste și doriți să calculați media diferitelor coloane.

Exemplu: Dată fiind următoarea listă de liste cu patru rânduri și trei coloane.

data = , , , ]

Vreți să obțineți valorile medii ale celor trei coloane:


Există trei metode care rezolvă această problemă. Vă puteți juca cu ele în shell-ul interactiv și puteți citi mai multe detalii mai jos:

Carte de materii

Metoda 1: Media în Python (fără bibliotecă)

Un simplu one-liner cu înțelegere de listă în combinație cu funcția zip() pe lista neambalată pentru a transpune lista de liste face treaba în Python.

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

Vă plac one-liners-urile Python? Eu da, cu siguranță – am scris chiar o carte întreagă despre asta cu editura NoStarch din San Francisco. Faceți clic pentru a consulta cartea într-o filă nouă:

Puteți vizualiza execuția codului și obiectele de memorie ale acestui cod în următorul instrument (faceți clic pe „Next” pentru a vedea cum se desfășoară un pas al codului).

Metoda 2: Average with NumPy Library

Creați o matrice NumPy din date și treceți-o la funcția np.average().

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

Argumentul axis al funcției average definește de-a lungul cărei axe doriți să calculați valoarea medie. Dacă doriți să calculați media coloanelor, definiți axis=0. Dacă doriți să calculați media pe rânduri, definiți axis=1. Dacă doriți să calculați media pe toate valorile, omiteți acest argument.

Metoda 3: Mean Statistics Library + Map()

Pentru a vă arăta o altă alternativă, iată una care folosește funcția map() și trucul nostru zip(*data) pentru a transpune „matricea” data.

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

Funcția map(function, iterable) aplică function la fiecare element din iterable. Ca o alternativă, puteți utiliza și înțelegerea listei, așa cum se arată în metoda 1 din acest tutorial. De fapt, Guido van Rossum, creatorul Python și dictatorul binevoitor al lui Python pentru viață (BDFL), preferă înțelegerea listei în locul funcției map().

Unde să mergem de aici?

Suficientă teorie, haideți să facem puțină practică!

Pentru a avea succes în codare, trebuie să ieșiți acolo și să rezolvați probleme reale pentru oameni reali. Acesta este modul în care puteți deveni cu ușurință un câștigător cu șase cifre. Și așa îți șlefuiești abilitățile de care ai cu adevărat nevoie în practică. La urma urmei, ce rost are să înveți teorie de care nimeni nu are nevoie niciodată?

Proiectele practice sunt modul în care îți ascuți fierăstrăul în codare!

Vrei să devii un maestru în codare concentrându-te pe proiecte practice de codare care îți aduc cu adevărat bani și rezolvă probleme pentru oameni?

Atunci devino un dezvoltator Python freelance! Este cel mai bun mod de a aborda sarcina de a vă îmbunătăți abilitățile Python – chiar dacă sunteți un începător complet.

Veniți la webinarul meu gratuit „Cum să vă construiți abilitățile Python cu venituri mari” și urmăriți cum mi-am dezvoltat afacerea de codare online și cum puteți face și dvs. la fel – din confortul propriei case.

Veniți la webinarul gratuit acum!

În timp ce lucra ca cercetător în domeniul sistemelor distribuite, Dr. Christian Mayer și-a descoperit dragostea pentru predarea studenților în domeniul informaticii.

Pentru a-i ajuta pe studenți să atingă niveluri mai înalte de succes în Python, el a fondat site-ul de educație în programare Finxter.com. Este autorul popularei cărți de programare Python One-Liners (NoStarch 2020), coautor al seriei de cărți autopublicate Coffee Break Python, pasionat de informatică, freelancer și proprietar al unuia dintre primele 10 cele mai mari bloguri Python din lume.

Pasiunile sale sunt scrisul, cititul și programarea. Dar cea mai mare pasiune a sa este să servească aspiranții la codare prin Finxter și să îi ajute să își sporească abilitățile. Vă puteți alătura academiei sale gratuite de e-mail aici.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.