Jak zprůměrovat seznam seznamů v jazyce Python?
Problém: Máte seznam seznamů a chcete vypočítat průměr jednotlivých sloupců.
Příklad:
data = , , , ]
Chcete získat průměrné hodnoty tří sloupců:
Existují tři metody, které řeší tento problém. Můžete si s nimi pohrát v interaktivním prostředí a níže si přečíst další podrobnosti:
Obsah
Metoda 1: Průměr v Pythonu (bez knihovny)
Jednoduchý jednořádkový příkaz s porozuměním seznamu v kombinaci s funkcí zip()
na rozbaleném seznamu pro transpozici seznamu seznamů udělá práci v Pythonu.
data = , , , ]# Method 1: Pure Pythonres = print(res)#
Máte rádi jednořádky v Pythonu? Já určitě ano – dokonce jsem o tom napsal celou knihu se sanfranciským nakladatelstvím NoStarch. Kliknutím se na knihu podíváte v nové záložce:
Vizualizaci provádění kódu a paměťových objektů tohoto kódu si můžete prohlédnout v následujícím nástroji (stačí kliknout na „Další“ a uvidíte, jak se odvíjí jeden krok kódu).
Metoda 2: Průměrování pomocí knihovny NumPy
Z dat vytvoříte pole NumPy a předáte ho funkci np.average().
data = , , , ]# Method 2: NumPyimport numpy as npa = np.array(data)res = np.average(a, axis=0)print(res)#
Argument axis
funkce average určuje, podél které osy chcete vypočítat průměrnou hodnotu. Pokud chcete průměrovat sloupce, definujte axis=0
. Pokud chcete průměrovat řádky, definujte axis=1
. Pokud chcete průměrovat všechny hodnoty, tento argument vynechejte.
Metoda 3: Knihovna průměrných statistik + Map()
Jen pro ukázku další alternativy uvádíme jednu s použitím funkce map()
a našeho triku zip(*data)
pro transpozici „matice“ data
.
data = , , , ]# Method 3: Statistics + Map()import statisticsres = map(statistics.mean, zip(*data))print(list(res))#
Funkce map(function, iterable)
aplikuje function
na každý prvek v iterable
. Jako alternativu můžete také použít chápání seznamu, jak je uvedeno v metodě 1 v tomto návodu. Guido van Rossum, tvůrce jazyka Python a jeho benevolentní diktátor pro život (BDFL), ve skutečnosti dává přednost porozumění seznamu před funkcí map()
.
Kam dál?
Teorie už bylo dost, pojďme do praxe!“
Chcete-li být v programování úspěšní, musíte se dostat ven a řešit skutečné problémy skutečných lidí. Tak se můžete snadno stát šestimístným výdělkem. A právě tak si v praxi vypilujete dovednosti, které skutečně potřebujete. Vždyť k čemu je učení teorie, kterou nikdo nikdy nepotřebuje?
Praktické projekty jsou způsob, jak si v kódování nabrousit pilku!
Chcete se stát mistrem kódu tím, že se zaměříte na praktické projekty, které vám skutečně vydělávají peníze a řeší problémy lidí?
Tak se staňte vývojářem Pythonu na volné noze! Je to nejlepší způsob, jak přistoupit k úkolu zlepšit své dovednosti v Pythonu – i když jste úplný začátečník.
Přihlaste se na můj bezplatný webinář „Jak si vybudovat dovednost Python s vysokým příjmem“ a podívejte se, jak jsem rozvíjel své kódovací podnikání online a jak to můžete udělat i vy – z pohodlí svého domova.
Přihlaste se na bezplatný webinář nyní!
Při práci výzkumníka v oblasti distribuovaných systémů našel Dr. Christian Mayer zalíbení ve výuce studentů informatiky.
Aby pomohl studentům dosáhnout vyšší úrovně úspěchu v jazyce Python, založil webovou stránku Finxter.com zaměřenou na výuku programování. Je autorem populární knihy o programování Python One-Liners (NoStarch 2020), spoluautorem série knih Coffee Break Python vydaných vlastním nákladem, nadšencem do informatiky, pracovníkem na volné noze a majitelem jednoho z deseti největších blogů o Pythonu na světě.
Jeho vášní je psaní, čtení a programování. Jeho největší vášní je však sloužit začínajícím programátorům prostřednictvím Finxteru a pomáhat jim zvyšovat jejich dovednosti. Do jeho bezplatné e-mailové akademie se můžete přihlásit zde.
.