Hogyan lehet egy listákból álló listát átlagolni Pythonban?

Probléma: Van egy listánk, és szeretnénk kiszámítani a különböző oszlopok átlagát.

Példa: Adott a következő lista négy sorral és három oszloppal.

data = , , , ]

A három oszlop átlagértékét szeretnéd megkapni:


A feladat megoldására három módszer létezik. Ezekkel játszhatsz az interaktív héjban, és alább olvashatsz további részleteket:

Tartalomjegyzék

1. módszer: Átlagolás Pythonban (könyvtár nélkül)

Egy egyszerű egysoros listamegértés a zip() függvénnyel kombinálva a kicsomagolt listán a listák listájának transzponálására Pythonban elvégzi a munkát.

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

Szereted a Python egysorosokat? Én biztosan – még egy egész könyvet is írtam róla a San Francisco-i NoStarch Kiadóval. Kattints a könyv új lapon történő megtekintéséhez:

A kód végrehajtását és memóriaobjektumait az alábbi eszközzel szemléltetheted (csak kattints a “Tovább”-ra, hogy lásd, hogyan bontakozik ki a kód egy lépése).

2. módszer: Átlagolás NumPy könyvtárral

Egy NumPy tömböt hozol létre az adatokból, és átadod az np.average() függvénynek.

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

Az average függvény axis argumentuma határozza meg, hogy melyik tengely mentén szeretné kiszámítani az átlagértéket. Ha oszlopokat akar átlagolni, határozza meg a axis=0 értéket. Ha sorokat akar átlagolni, határozza meg a axis=1 értéket. Ha az összes értékre szeretne átlagolni, hagyja ki ezt az argumentumot.

3. módszer: Mean Statistics Library + Map()

Csak hogy egy másik alternatívát mutassunk, itt van egy, amely az map() függvényt és a zip(*data) trükkünket használja a data “mátrix” transzponálására.

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

A map(function, iterable) függvény a iterable minden egyes elemére function-et alkalmazza. Alternatívaként használhatod a lista megértését is, ahogyan azt a bemutató 1. módszere mutatja. Valójában Guido van Rossum, a Python megalkotója és a Python jóindulatú diktátora az életért (BDFL) a listamegértést részesíti előnyben a map() függvénnyel szemben.

Merre tovább?

Elég az elméletből, jöjjön a gyakorlat!

Ahhoz, hogy sikeres legyél a kódolásban, ki kell menned, és valódi problémákat kell megoldanod valódi emberek számára. Így válhatsz könnyen hatszámjegyű keresővé. És így csiszolhatod a gyakorlatban azokat a készségeket, amelyekre valóban szükséged van. Végtére is, mi értelme olyan elméletet tanulni, amire soha senkinek sincs szüksége?

A gyakorlati projektek segítségével élesítheted a fűrészedet a kódolásban!

Kódmesterré akarsz válni úgy, hogy gyakorlati kódprojektekre összpontosítasz, amelyekkel ténylegesen pénzt kereshetsz és problémákat oldhatsz meg az emberek számára?

Akkor legyél Python szabadúszó fejlesztő! Ez a legjobb módja annak, hogy megközelítsd a Python-képességeid fejlesztésének feladatát – még akkor is, ha teljesen kezdő vagy.

Vegyél részt az ingyenes webináriumomon “Hogyan építsd fel a magas jövedelmű Python-képességedet”, és nézd meg, hogyan növeltem meg az online kódolási üzletemet, és hogyan tudod te is megtenni – otthonod kényelméből.

Vegyél részt az ingyenes webináriumon most!

Mialatt az elosztott rendszerek kutatójaként dolgozott, Dr. Christian Mayer megtalálta a szerelmét a számítástechnikai diákok tanítása iránt.

Azért, hogy segítsen a diákoknak magasabb szintű Python-sikereket elérni, megalapította a Finxter.com programozási oktatási weboldalt. A népszerű Python One-Liners című programozási könyv (NoStarch 2020) szerzője, a Coffee Break Python saját kiadású könyvsorozat társszerzője, az informatika szerelmese, szabadúszó, és a világ 10 legnagyobb Python blogjának egyikének tulajdonosa.

A szenvedélye az írás, az olvasás és a kódolás. Legnagyobb szenvedélye azonban az, hogy a Finxteren keresztül szolgálja a feltörekvő programozókat, és segítse őket képességeik fejlesztésében. Ingyenes e-mail akadémiájához itt csatlakozhatsz.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.