L'écart type d'une liste
Je veux trouver la moyenne et l'écart type de 1ère, 2ème,... les chiffres de plusieurs (Z) listes. Par exemple, j'ai
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 )...
Maintenant je veux profiter de la moyenne et de la mst de *_Rank[0]
, la moyenne et la mst de *_Rank[1]
, etc.
(c'est à dire: la moyenne et de la mst de le 1er chiffre de tous les (A..Z)_rank listes;
la moyenne et de la mst de la 2ème chiffre de tous les (A..Z)_rank listes;
la moyenne et de la mst de la 3e chiffre...; etc).
- Bonjour, virale. Un Débordement de pile qui fonctionne le mieux en tant que questionetréponse site. Vous posez une question, et tout le monde apporte des réponses. Votre post ne contient que des déclarations, pas de questions. Avez-vous une programmation spécifique à la question? Pour le dire d'une autre façon, ce que vous avez essayé jusqu'à présent, et où êtes-vous pris?
- Pourquoi ne sont pas ces listes dans un dictionnaire ou quelque chose?
- Désolé Si je ne donne pas question correctement. Je veux profiter de la moyenne de A_rank[0] (0.8),B_rank[0](0.1),C_rank[0](1.2),...Z_rank[0]. de même pour A_rank[1](0.4),B_rank[1](2.8),C_rank[1](3.4),...Z_rank[1].
InformationsquelleAutor physics_for_all | 2013-03-13
Vous devez vous connecter pour publier un commentaire.
Depuis Python 3.4 /PEP450 il y a un
module de statistiques
dans la bibliothèque standard, qui a un la méthodeecartype
pour le calcul de l'écart-type de iterables comme la vôtre:pstddev
devrait probablement être utilisé à la place si votre liste représente l'ensemble de la population (c'est à dire la liste n'est pas un échantillon d'une population).stddev
est calculée à l'aide de variance de l'échantillon et surestime la moyenne de population.stdev
etpstdev
, ne pas utiliserstd
pourstandard
que l'on pourrait attendre. Je ne pouvais pas éditer le post que des modifications besoin de modifier au moins 6 caractères...Je mettrais
A_Rank
et al en 2D NumPy tableau, et ensuite utilisernumpy.moyenne()
etnumpy.std()
pour calculer les moyens et les écarts-type:STDEV.P()
et la fonction Numpystd(ddof=0)
calculer le population sd, ou non corrigée de l'échantillon sd, tandis que la fonction ExcelSTDEV.S()
et Numpy fonctionstd(ddof=1)
calculer le (corrigé) de l'échantillon sd, ce qui équivaut à sqrt(N/(N-1)) fois la population sd, où N est le nombre de points. En savoir plus: en.m.wikipedia.org/wiki/...Voici quelques pur-code Python que vous pouvez utiliser pour calculer la moyenne et l'écart-type.
Tout le code ci-dessous est basé sur le
statistiques
module en Python 3.4+.Remarque: pour améliorer la précision lors du calcul des flotteurs, le
statistics
module utilise une fonction personnalisée_sum
plutôt que dans le haut-sum
que j'ai utilisé à sa place.Maintenant, nous avons par exemple:
pvar=ss/(n-1)
?n-1
. Le code ci-dessus est pour la population SD (il y a doncn
degrés de liberté).stddev
fonction de sorte qu'il est possible de calculer à la fois de l'échantillon et de la population écarts-types.En Python 2.7.1, vous pouvez calculer l'écart type à l'aide de
numpy.std()
pour:numpy.std()
avec aucun des arguments supplémentaires en plus de votre liste de données.Il calcule échantillon std plutôt que de la population std.
En python 2.7 vous pouvez utiliser NumPy est
numpy.std()
donne la écart-type de population.En Python 3.4
statistiques.ecartype()
renvoie l'écart-type d'échantillon. Lepstdv()
fonction est la même quenumpy.std()
.pur code python:
sqrt(sum((x - mean)**2 for x in lst) / len(lst))
Autres réponses couvrir comment le faire std dev python suffisamment, mais personne n'explique comment faire de l'insolite traversée que vous avez décrit.
Je vais supposer A-Z est l'ensemble de la population. Si pas voir Ome's réponse sur la façon de l'inférence à partir d'un échantillon.
Afin d'obtenir l'écart-type/moyenne du premier chiffre de chaque liste, vous aurait besoin de quelque chose comme ceci:
Pour raccourcir le code et la généraliser à tout le nième chiffre d'utiliser la fonction suivante, j'ai généré pour vous:
Maintenant, vous pouvez simplement obtenir le stdd et la moyenne de tous les n-ième lieux de A à Z comme ceci:
str([chr(x)+'_rank[n]' for x in range(65,65+26)]).replace("'", "")
À l'aide de python, voici quelques méthodes:
Approach1 - à l'aide d'une fonction
De bookshare 2: calculer la variance et de prendre la racine carrée de
Approach3: à l'aide de notions de mathématiques de base
Remarque:
variance
calcule la variance de l'échantillon de la populationpvariance
calcule la variance de l'ensemble de la populationstdev
etpstdev