Wie kann man in Python den Durchschnitt einer Liste von Listen berechnen?
Problem: Sie haben eine Liste von Listen und möchten den Durchschnitt der verschiedenen Spalten berechnen.
Beispiel: Sie haben eine Liste mit vier Zeilen und drei Spalten.
data = , , , ]
Sie möchten die Durchschnittswerte der drei Spalten ermitteln:
Es gibt drei Methoden, die dieses Problem lösen. Sie können sie in der interaktiven Shell ausprobieren und weiter unten mehr Details lesen:
Inhaltsverzeichnis
Methode 1: Durchschnitt in Python (keine Bibliothek)
Ein einfacher Einzeiler mit Listenverständnis in Kombination mit der Funktion zip()
auf der ungepackten Liste, um die Liste der Listen zu transponieren, erledigt die Aufgabe in Python.
data = , , , ]# Method 1: Pure Pythonres = print(res)#
Liebst du Python-Einzeiler? Ich auf jeden Fall – ich habe sogar ein ganzes Buch darüber geschrieben, zusammen mit dem Verlag NoStarch aus San Francisco. Klicken Sie hier, um das Buch in einem neuen Tab zu lesen:
Sie können die Codeausführung und die Speicherobjekte dieses Codes im folgenden Tool visualisieren (klicken Sie einfach auf „Weiter“, um zu sehen, wie sich ein Schritt des Codes entfaltet).
Methode 2: Durchschnitt mit der NumPy-Bibliothek
Sie erstellen ein NumPy-Array aus den Daten und übergeben es an die Funktion np.average().
data = , , , ]# Method 2: NumPyimport numpy as npa = np.array(data)res = np.average(a, axis=0)print(res)#
Das axis
Argument der Durchschnittsfunktion definiert, entlang welcher Achse Sie den Durchschnittswert berechnen wollen. Wenn Sie Spalten mitteln wollen, definieren Sie axis=0
. Wenn Sie Zeilen mitteln wollen, definieren Sie axis=1
. Wenn Sie den Durchschnitt über alle Werte bilden wollen, lassen Sie dieses Argument weg.
Methode 3: Mittelwert-Statistik-Bibliothek + Map()
Um Ihnen eine weitere Alternative zu zeigen, hier eine, bei der die Funktion map()
und unser Trick zip(*data)
zur Transposition der „Matrix“ data
verwendet werden.
data = , , , ]# Method 3: Statistics + Map()import statisticsres = map(statistics.mean, zip(*data))print(list(res))#
Die Funktion map(function, iterable)
wendet function
auf jedes Element in iterable
an. Alternativ können Sie auch das Listenverständnis verwenden, wie in Methode 1 in diesem Lernprogramm gezeigt. Guido van Rossum, der Schöpfer von Python und Pythons wohlwollender Diktator fürs Leben (BDFL), bevorzugt die Listenverarbeitung gegenüber der Funktion map()
.
Wie soll es weitergehen?
Genug Theorie, kommen wir zur Praxis!
Um im Programmieren erfolgreich zu sein, müssen Sie rausgehen und echte Probleme für echte Menschen lösen. So kann man ganz einfach ein sechsstelliger Verdiener werden. Und so verfeinern Sie die Fähigkeiten, die Sie wirklich brauchen, in der Praxis. Denn was nützt es, Theorie zu lernen, die niemand braucht?
Mit Praxisprojekten schärfen Sie Ihre Säge in der Programmierung!
Möchten Sie ein Code-Meister werden, indem Sie sich auf praktische Code-Projekte konzentrieren, mit denen Sie tatsächlich Geld verdienen und Probleme für Menschen lösen?
Dann werden Sie ein freiberuflicher Python-Entwickler! Das ist der beste Weg, um Ihre Python-Kenntnisse zu verbessern – auch wenn Sie ein absoluter Anfänger sind.
Nehmen Sie an meinem kostenlosen Webinar „How to Build Your High-Income Skill Python“ teil und sehen Sie, wie ich mein Coding-Geschäft online aufgebaut habe und wie Sie das auch können – bequem von zu Hause aus.
Nehmen Sie jetzt am kostenlosen Webinar teil!
Während seiner Arbeit als Forscher im Bereich verteilter Systeme entdeckte Dr. Christian Mayer seine Liebe zum Unterrichten von Informatikstudenten.
Um Studenten dabei zu helfen, erfolgreicher in Python zu werden, gründete er die Website Finxter.com für Programmierunterricht. Er ist Autor des beliebten Programmierbuchs Python One-Liners (NoStarch 2020), Mitautor der Coffee Break Python-Reihe von Büchern im Selbstverlag, Informatik-Enthusiast, Freiberufler und Inhaber eines der zehn größten Python-Blogs weltweit.
Seine Leidenschaften sind Schreiben, Lesen und Programmieren. Aber seine größte Leidenschaft ist es, aufstrebende Programmierer durch Finxter zu unterstützen und ihnen zu helfen, ihre Fähigkeiten zu verbessern. Sie können seiner kostenlosen E-Mail-Akademie hier beitreten.