Standard deviation of a list

后端 未结 8 1705
旧时难觅i
旧时难觅i 2020-12-07 09:57

I want to find mean and standard deviation of 1st, 2nd,... digits of several (Z) lists. For example, I have

A_rank=[0.8,0.4,1.2,3.7,2.6,5.8]
B_rank=[0.1,2.8,         


        
相关标签:
8条回答
  • 2020-12-07 10:16

    pure python code:

    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))
    
    0 讨论(0)
  • 2020-12-07 10:17

    Here's some pure-Python code you can use to calculate the mean and standard deviation.

    All code below is based on the statistics module in 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
    

    Note: for improved accuracy when summing floats, the statistics module uses a custom function _sum rather than the built-in sum which I've used in its place.

    Now we have for example:

    >>> 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
    
    0 讨论(0)
提交回复
热议问题