phy*_*all 91 python list standard-deviation
我想找到几个(Z)列表的第1,第2,......数字的均值和标准差.例如,我有
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 )...
Run Code Online (Sandbox Code Playgroud)
现在我想取平均值和标准值*_Rank[0]
,平均值和标准值*_Rank[1]
等
(即:所有(A..Z)_rank列表中第1位
的平均值和标准值;第2位数的平均值和标准值所有(A..Z)_rank列表;
第三位数的均值和标准......;等等).
Ben*_*ngt 130
因为Python 3.4/PEP450存在statistics module
在标准库,其中有一个方法stdev
,用于计算像您iterables的标准偏差:
>>> A_rank = [0.8, 0.4, 1.2, 3.7, 2.6, 5.8]
>>> import statistics
>>> statistics.stdev(A_rank)
2.0634114147853952
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 97
我将A_Rank
et al放入2D NumPy数组,然后使用numpy.mean()
和numpy.std()
计算均值和标准差:
In [17]: import numpy
In [18]: arr = numpy.array([A_rank, B_rank, C_rank])
In [20]: numpy.mean(arr, axis=0)
Out[20]:
array([ 0.7 , 2.2 , 1.8 , 2.13333333, 3.36666667,
5.1 ])
In [21]: numpy.std(arr, axis=0)
Out[21]:
array([ 0.45460606, 1.29614814, 1.37355985, 1.50628314, 1.15566239,
1.2083046 ])
Run Code Online (Sandbox Code Playgroud)
Ale*_*ley 47
这里有一些纯Python代码可用于计算平均值和标准差.
下面的所有代码都基于statistics
Python 3.4+中的模块.
def mean(data):
"""Return the sample arithmetic mean of data."""
n = len(data)
if n < 1:
raise ValueError('mean requires at least one data point')
return sum(data)/n # in Python 2 use sum(data)/float(n)
def _ss(data):
"""Return sum of square deviations of sequence data."""
c = mean(data)
ss = sum((x-c)**2 for x in data)
return ss
def stddev(data, ddof=0):
"""Calculates the population standard deviation
by default; specify ddof=1 to compute the sample
standard deviation."""
n = len(data)
if n < 2:
raise ValueError('variance requires at least two data points')
ss = _ss(data)
pvar = ss/(n-ddof)
return pvar**0.5
Run Code Online (Sandbox Code Playgroud)
注意:为了在求和浮点数时提高精度,statistics
模块使用自定义函数_sum
而不是sum
我在其中使用的内置函数.
现在我们有例如:
>>> mean([1, 2, 3])
2.0
>>> stddev([1, 2, 3]) # population standard deviation
0.816496580927726
>>> stddev([1, 2, 3], ddof=1) # sample standard deviation
0.1
Run Code Online (Sandbox Code Playgroud)
小智 21
在Python 2.7.1中,您可以使用numpy.std()
以下方法计算标准偏差:
numpy.std()
除了数据列表之外,只使用没有其他参数.numpy.std(<your-list>,ddof = 1)
计算中使用的除数是N - ddof,其中N表示元素的数量.默认情况下,ddof为零.
它计算样本std而不是人口std.
pan*_*kaj 11
使用python,这里有几个方法:
import statistics as st
n = int(input())
data = list(map(int, input().split()))
Run Code Online (Sandbox Code Playgroud)
stdev = st.pstdev(data)
Run Code Online (Sandbox Code Playgroud)
variance = st.pvariance(data)
devia = math.sqrt(variance)
Run Code Online (Sandbox Code Playgroud)
mean = sum(data)/n
variance = sum([((x - mean) ** 2) for x in X]) / n
stddev = variance ** 0.5
print("{0:0.1f}".format(stddev))
Run Code Online (Sandbox Code Playgroud)
variance
计算样本总体的方差 pvariance
计算整个总体的方差 stdev
和pstdev
B.K*_*cis 10
在python 2.7中,你可以使用NumPy numpy.std()
给出人口标准偏差.
在Python 3.4中statistics.stdev()
返回样本标准偏差.该pstdv()
功能是一样的numpy.std()
.
纯python代码:
from math import sqrt
def stddev(lst):
mean = float(sum(lst)) / len(lst)
return sqrt(float(reduce(lambda x, y: x + y, map(lambda x: (x - mean) ** 2, lst))) / len(lst))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
293176 次 |
最近记录: |