关于数学:在Python中计算算术平均值(一种平均值)

Calculating arithmetic mean (one type of average) in Python

Python中是否有内置或标准库方法来计算数字列表的算术平均值(一种平均值)?


我不知道标准库中有什么。但是,您可以使用以下内容:

1
2
3
4
5
6
7
def mean(numbers):
    return float(sum(numbers)) / max(len(numbers), 1)

>>> mean([1,2,3,4])
2.5
>>> mean([])
0.0

在numpy中,有numpy.mean()


NumPy的numpy.mean是算术平均值。用法就像这样简单:

1
2
3
4
>>> import numpy
>>> a = [1, 2, 4]
>>> numpy.mean(a)
2.3333333333333335


使用statistics.mean

1
2
import statistics
print(statistics.mean([1,2,4])) # 2.3333333333333335

它从Python 3.4开始提供。对于3.1-3.3用户,PyPI上提供了旧版本的模块,名称为stats。只需将statistics更改为stats即可。


你甚至不需要numpy或scipy ......

1
2
3
>>> a = [1, 2, 3, 4, 5, 6]
>>> print(sum(a) / len(a))
3


使用scipy:

1
2
3
import scipy;
a=[1,2,4];
print(scipy.mean(a));


您可以执行以下操作,而不是转换为浮动

1
2
def mean(nums):
    return sum(nums, 0.0) / len(nums)

或使用lambda

1
mean = lambda nums: sum(nums, 0.0) / len(nums)


1
2
from statistics import mean
avarage=mean(your_list)

例如

1
2
3
4
5
from statistics import mean

my_list=[5,2,3,2]
avarage=mean(my_list)
print(avarage)

结果是

1
3.0

1
2
3
def avg(l):
   """uses floating-point division."""
    return sum(l) / float(len(l))

例子:

1
2
3
4
5
l1 = [3,5,14,2,5,36,4,3]
l2 = [0,0,0]

print(avg(l1)) # 9.0
print(avg(l2)) # 0.0

1
2
3
4
5
6
7
8
def list_mean(nums):
    sumof = 0
    num_of = len(nums)
    mean = 0
    for i in nums:
        sumof += i
    mean = sumof / num_of
    return float(mean)

你的问题的正确答案是使用statistics.mean。但是为了好玩,这里是一个不使用len()函数的均值版本,所以它(如statistics.mean)可以用在不支持len()的生成器上:

1
2
3
4
5
6
from functools import reduce
from operator import truediv
def ave(seq):
    return truediv(*reduce(lambda a, b: (a[0] + b[1], b[0]),
                           enumerate(seq, start=1),
                           (0, 0)))

我一直认为avg从builtins / stdlib中省略,因为它很简单

1
sum(L)/len(L) # L is some list

任何警告都会在调用者代码中解决,以供本地使用。

值得注意的警告:

  • 非浮点结果:在python2中,9/4是2.要解析,使用float(sum(L))/len(L)from __future__ import division

  • 除以零:列表可能为空。解决:

    1
    2
    3
    if not L:
        raise WhateverYouWantError("foo")
    avg = float(sum(L))/len(L)

  • 其他人已经发布了非常好的答案,但是有些人可能仍在寻找找到Mean(avg)的经典方法,所以在这里我发布这个(在Python 3.6中测试的代码):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    def meanmanual(listt):

    mean = 0
    lsum = 0
    lenoflist = len(listt)

    for i in listt:
        lsum += i

    mean = lsum / lenoflist
    return float(mean)

    a = [1, 2, 3, 4, 5, 6]
    meanmanual(a)

    Answer: 3.5