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的
1 2 3 4 | >>> import numpy >>> a = [1, 2, 4] >>> numpy.mean(a) 2.3333333333333335 |
使用
1 2 | import statistics print(statistics.mean([1,2,4])) # 2.3333333333333335 |
它从Python 3.4开始提供。对于3.1-3.3用户,PyPI上提供了旧版本的模块,名称为
你甚至不需要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) |
你的问题的正确答案是使用
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))) |
我一直认为
1 | sum(L)/len(L) # L is some list |
任何警告都会在调用者代码中解决,以供本地使用。
值得注意的警告:
非浮点结果:在python2中,9/4是2.要解析,使用
除以零:列表可能为空。解决:
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 |