Chcę znaleźć średnią i odchylenie standardowe pierwszej, drugiej, ... cyfry kilku list (Z). Na przykład mam
A_rank=[0.8,0.4,1.2,3.7,2.6,5.8]
B_rank=[0.1,2.8,3.7,2.6,5,3.4]
C_Rank=[1.2,3.4,0.5,0.1,2.5,6.1]
# etc (up to Z_rank )...
Teraz chcę wziąć średnią i standardową z *_Rank[0]
, średnią i standardową z *_Rank[1]
itd.
(Tj .: średnią i standardową z pierwszej cyfry ze wszystkich list (A..Z) _rank;
średnią i standardową z drugiej cyfry z wszystkie listy (A..Z) _rank;
średnia i standardowa trzecia cyfra ...; itd.).
python
list
standard-deviation
physics_for_all
źródło
źródło
Odpowiedzi:
Od Pythona 3.4 / PEP450 znajduje się
statistics module
w standardowej biblioteki, która ma metodęstdev
obliczania odchylenia standardowego iterables jak Twoja:źródło
pstddev
prawdopodobnie powinno być używane zamiast tego, jeśli lista reprezentuje całą populację (tj. Lista nie jest próbką populacji).stddev
jest obliczana przy użyciu wariancji próbki i przeszacowuje średnią populacji.stdev
ipstdev
nie są używanestd
wstandard
sposób, jakiego można by się spodziewać. Nie mogłem edytować postu, ponieważ edycje wymagają modyfikacji co najmniej 6 znaków ...Umieściłbym
A_Rank
et al w tablicy 2D NumPy , a następnie użyłbymnumpy.mean()
inumpy.std()
obliczył średnie i odchylenia standardowe:źródło
STDEV.P()
i funkcja Numpystd(ddof=0)
obliczają sd populacji lub nieskorygowane sd próbki , podczas gdy funkcja ExcelSTDEV.S()
i funkcja Numpystd(ddof=1)
obliczają (poprawiony) sd próbki , który jest równy sqrt (N / (N-1) ) razy populacja sd, gdzie N to liczba punktów. Zobacz więcej: en.m.wikipedia.org/wiki/…Oto kod w czystym Pythonie, którego możesz użyć do obliczenia średniej i odchylenia standardowego.
Cały poniższy kod jest oparty na
statistics
module w Pythonie 3.4+.Uwaga: aby zwiększyć dokładność sumowania wartości zmiennoprzecinkowych,
statistics
moduł używa funkcji niestandardowej_sum
zamiast funkcji wbudowanej,sum
której użyłem zamiast niej.Teraz mamy na przykład:
źródło
pvar=ss/(n-1)
?n-1
. Powyższy kod dotyczy populacji SD (więc istniejąn
stopnie swobody).stddev
funkcję, aby mogła obliczyć odchylenia standardowe próbki i populacji.W Pythonie 2.7.1 możesz obliczyć odchylenie standardowe za pomocą
numpy.std()
:numpy.std()
bez dodatkowych argumentów oprócz listy danych.Oblicza standardową próbkę zamiast standardowej populacji.
źródło
W Pythonie 2.7 możesz użyć NumPy's, który
numpy.std()
podaje odchylenie standardowe populacji .W Pythonie 3.4
statistics.stdev()
zwraca przykładowe odchylenie standardowe.pstdv()
Funkcja jest taka sama jaknumpy.std()
.źródło
Używając Pythona, oto kilka metod:
Approach1 - za pomocą funkcji
Podejście 2: oblicz wariancję i weź z niej pierwiastek kwadratowy
Podejście 3: używanie podstawowej matematyki
Uwaga:
variance
oblicza wariancję populacji próbkipvariance
oblicza wariancję całej populacjistdev
ipstdev
źródło
czysty kod Pythona:
źródło
sqrt(sum((x - mean)**2 for x in lst) / len(lst))
Inne odpowiedzi obejmują wystarczająco, jak zrobić std dev w Pythonie, ale nikt nie wyjaśnia, jak wykonać dziwaczne przejście, które opisałeś.
Zakładam, że AZ to cała populacja. Jeśli nie, zobacz odpowiedź Ome na temat wnioskowania na podstawie próbki.
Aby uzyskać odchylenie standardowe / średnią z pierwszej cyfry na każdej liście, potrzebowałbyś czegoś takiego:
Aby skrócić kod i uogólnić go na dowolną n-tą cyfrę, użyj następującej funkcji, którą dla ciebie wygenerowałem:
Teraz możesz po prostu pobrać stdd i średnią wszystkich n-tych miejsc od AZ w ten sposób:
źródło
str([chr(x)+'_rank[n]' for x in range(65,65+26)]).replace("'", "")