Wenn ich eine Liste wie diese habe:
results=[-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439,
0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
Ich möchte die Varianz dieser Liste in Python berechnen, die der Durchschnitt der quadratischen Differenzen vom Mittelwert ist.
Wie kann ich das machen? Der Zugriff auf die Elemente in der Liste, um die Berechnungen durchzuführen, verwirrt mich, weil ich die quadratischen Unterschiede erhalten habe.
Sie können die integrierte Funktion von numpy verwenden var
:
import numpy as np
results = [-14.82381293, -0.29423447, -13.56067979, -1.6288903, -0.31632439,
0.53459687, -1.34069996, -1.61042692, -4.03220519, -0.24332097]
print(np.var(results))
Das gibt dir 28.822364260579157
Wenn Sie - aus welchem Grund auch immer - numpy
eine integrierte Funktion nicht verwenden können und / oder nicht möchten, können Sie sie auch "von Hand" berechnen, z. B. anhand eines Listenverständnisses :
# calculate mean
m = sum(results) / len(results)
# calculate variance using a list comprehension
var_res = sum((xi - m) ** 2 for xi in results) / len(results)
das gibt Ihnen das identische Ergebnis.
Wenn Sie an der Standardabweichung interessiert sind , können Sie numpy.std verwenden :
print(np.std(results))
5.36864640860051
@ Serge Ballesta erklärte sehr gut den Unterschied zwischen Varianz n
und n-1
. In numpy können Sie diesen Parameter einfach mit der Option einstellen ddof
. Die Standardeinstellung ist 0
, also können Sie für den n-1
Fall einfach Folgendes tun:
np.var(results, ddof=1)
Die "von Hand" -Lösung finden Sie in der Antwort von @Serge Ballesta .
Beide Ansätze ergeben 32.024849178421285
.
Sie können den Parameter auch einstellen für std
:
np.std(results, ddof=1)
5.659050201086865
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen