lis的标准差

2024-06-01 08:45:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找出1,2,…的平均值和标准差,。。。几个(Z)列表的数字。例如,我有

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 )...

现在我要取*_Rank[0]的平均值和标准值,以及*_Rank[1]的平均值和标准值等 (即:所有(A..Z)排名表中第一位的平均数和标准差;
所有(A..Z)排名表中第二位的平均值和标准差;
第三位的平均数和性病…;等)。


Tags: to列表etc数字平均值uprank标准差
3条回答

下面是一些纯Python代码,可以用来计算平均值和标准偏差。

下面的所有代码都基于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

注意:为了提高对浮点数求和时的精度,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

因为Python 3.4/PEP450在标准库中有一个^{},它有一个method ^{}用于计算像您这样的iterables的标准偏差:

>>> A_rank = [0.8, 0.4, 1.2, 3.7, 2.6, 5.8]
>>> import statistics
>>> statistics.stdev(A_rank)
2.0634114147853952

我将A_Rank等放入一个2DNumPy数组,然后使用^{}^{}计算平均值和标准偏差:

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 ])

相关问题 更多 >