如何在Python中找到列表的平均值?
[1, 2, 3, 4] ⟶ 2.5
如何在Python中找到列表的平均值?
[1, 2, 3, 4] ⟶ 2.5
当前回答
如果您使用的是python >= 3.4,则有一个统计库
https://docs.python.org/3/library/statistics.html
你可以像这样使用它的mean方法。让我们假设你有一个数字列表,你想找到平均值:-
list = [11, 13, 12, 15, 17]
import statistics as s
s.mean(list)
它还有其他方法,比如stdev,方差,模式,调和平均值,中位数等,这些方法都非常有用。
其他回答
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
l = map(float,l)
print '%.2f' %(sum(l)/len(l))
为了使用reduce来获取运行平均值,您需要跟踪到目前为止所看到的元素总数。因为它不是列表中的一个普通元素,所以还必须向reduce传递一个要折叠成的额外参数。
>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> running_average = reduce(lambda aggr, elem: (aggr[0] + elem, aggr[1]+1), l, (0.0,0))
>>> running_average[0]
(181.0, 9)
>>> running_average[0]/running_average[1]
20.111111111111111
如果你想要的不仅仅是平均值(又名平均),你可以看看scipy的统计:
from scipy import stats
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print(stats.describe(l))
# DescribeResult(nobs=9, minmax=(2, 78), mean=20.11111111111111,
# variance=572.3611111111111, skewness=1.7791785448425341,
# kurtosis=1.9422716419666397)
你可以为平均值,使用率做一个函数:
average(21,343,2983) # You can pass as many arguments as you want.
代码如下:
def average(*args):
total = 0
for num in args:
total+=num
return total/len(args)
*args允许任意数量的答案。
而不是强制转换为float,你可以将0.0加到和:
def avg(l):
return sum(l, 0.0) / len(l)