Hoe bereken je het gemiddelde van een lijst met lijsten in Python?

Probleem: U hebt een lijst van lijsten en u wilt het gemiddelde berekenen van de verschillende kolommen.

Voorbeeld: Gegeven de volgende lijst van lijsten met vier rijen en drie kolommen.

data = , , , ]

U wilt de gemiddelde waarden van de drie kolommen hebben:


Er zijn drie methoden die dit probleem oplossen. U kunt er in de interactieve shell mee spelen en hieronder meer details lezen:

Inhoudsopgave

Methode 1: Gemiddelde in Python (geen bibliotheek)

Een eenvoudige one-liner met list comprehension in combinatie met de zip()-functie op de uitgepakte lijst om de lijst van lijsten te transponeren, doet het werk in Python.

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

Houd je van Python one-liners? Ik in ieder geval wel-ik heb er zelfs een heel boek over geschreven met San Francisco uitgeverij NoStarch. Klik om het boek in een nieuw tabblad te bekijken:

U kunt de uitvoering van de code en de geheugenobjecten van deze code in het volgende hulpprogramma visualiseren (klik gewoon op “Volgende” om te zien hoe één stap van de code verloopt).

Methode 2: Gemiddelde met NumPy-bibliotheek

U maakt een NumPy-array van de gegevens en geeft deze door aan de np.average()-functie.

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

Het axis argument van de average functie definieert langs welke as u de gemiddelde waarde wilt berekenen. Als u kolommen wilt middelen, definieert u axis=0. Als u het gemiddelde van rijen wilt berekenen, definieert u axis=1. Als u over alle waarden wilt middelen, slaat u dit argument over.

Methode 3: Gemiddelde Statistieken Bibliotheek + Map()

Om u een ander alternatief te laten zien, is hier er een die de map() functie gebruikt en onze zip(*data) truc om de “matrix” data te transponeren.

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

De map(function, iterable) functie past function toe op elk element in iterable. Als alternatief kunt u ook list comprehension gebruiken, zoals getoond in methode 1 in deze tutorial. Guido van Rossum, de bedenker van Python en Python’s benevolent dictator for life (BDFL), geeft de voorkeur aan list comprehension boven de map() functie.

Hoe nu verder?

Genoeg theorie, laten we de praktijk induiken!

Om succesvol te worden in coderen, moet je er op uit en echte problemen oplossen voor echte mensen. Dat is hoe je gemakkelijk een zes-cijferige verdiener kunt worden. En dat is hoe je de vaardigheden die je echt nodig hebt in de praktijk bijschaaft. Wat heb je immers aan het leren van theorie die niemand ooit nodig heeft?

Praktijkprojecten is hoe je je zaag slijpt in coderen!

Wil je een code meester worden door je te richten op praktische codeprojecten die je daadwerkelijk geld opleveren en problemen voor mensen oplossen?

Word dan een Python freelance ontwikkelaar! Het is de beste manier om de taak van het verbeteren van je Python-vaardigheden te benaderen – zelfs als je een complete beginner bent.

Doe mee aan mijn gratis webinar “Hoe bouw je een hoog inkomen op in Python” en zie hoe ik mijn codeerbedrijf online heb laten groeien en hoe jij dat ook kunt – vanuit het comfort van je eigen huis.

Doe nu mee aan de gratis webinar!

Terwijl hij werkte als onderzoeker in gedistribueerde systemen, ontdekte Dr. Christian Mayer zijn liefde voor het lesgeven aan studenten computerwetenschappen.

Om studenten te helpen een hoger niveau van Python-succes te bereiken, richtte hij de programmeeronderwijswebsite Finxter.com op. Hij is auteur van het populaire programmeerboek Python One-Liners (NoStarch 2020), co-auteur van de Coffee Break Python-serie van zelfgepubliceerde boeken, liefhebber van informatica, freelancer, en eigenaar van een van de top 10 grootste Python-blogs wereldwijd.

Zijn passies zijn schrijven, lezen en coderen. Maar zijn grootste passie is aspirant-coders via Finxter van dienst te zijn en hen te helpen hun vaardigheden te verbeteren. U kunt hier lid worden van zijn gratis e-mailacademie.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.