如何在Python中计算列表的平均值?
[1, 2, 3, 4] ⟶ 2.5
或者使用 pandas
的 Series.mean
方法:
pd.Series(sequence).mean()
演示:
>>> import pandas as pd
>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> pd.Series(l).mean()
20.11111111111111
>>>
来自文档:
Series.mean(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
¶
这里是有关此函数的文档:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.mean.html
这里是完整的文档:
说明:该函数用于计算序列中的平均值,参数包括指定轴、是否忽略空值等。更多详细信息请参见上述链接。
我曾在Udacity的问题解决中遇到过类似的问题。我没有使用内置函数,而是进行了编码:
def list_mean(n):
summing = float(sum(n))
count = float(len(n))
if n == []:
return False
return float(summing/count)
相比通常的时间更长,但对于初学者来说相当具有挑战性。
False
(相当于整数 0
)是处理此错误的最糟糕的方式之一。最好捕获 ZeroDivisionError
并引发更好的异常(例如 ValueError
)。 - kindallValueError
怎么比 ZeroDivisionError
好?后者更具体,而且似乎捕获算术错误只是为了重新抛出不同的错误有点多余。 - MatTheWhaleZeroDivisionError
只有在您知道计算方式(即涉及列表长度的除法)时才有用。如果您不知道这一点,它就无法告诉您传入值的问题所在。而您的新异常可以包含更具体的信息。 - kindall如果您想获得除平均值(又称均值)以外的更多数据,可以查看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)
作为初学者,我只编写了以下代码:
L = [15, 18, 2, 36, 12, 78, 5, 6, 9]
total = 0
def average(numbers):
total = sum(numbers)
total = float(total)
return total / len(numbers)
print average(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
两者可以给你接近相似的整数值,或者至少有10位小数。但如果你真的考虑到长浮点值,两者可能是不同的。方法可以根据你想要实现的目标而不同。
>>> l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
>>> print reduce(lambda x, y: x + y, l) / len(l)
20
>>> sum(l)/len(l)
20
>>> print reduce(lambda x, y: x + y, l) / float(len(l))
20.1111111111
>>> print sum(l)/float(len(l))
20.1111111111
@Andrew Clark 在他的陈述中是正确的。
x = [
[-5.01,-5.43,1.08,0.86,-2.67,4.94,-2.51,-2.25,5.56,1.03],
[-8.12,-3.48,-5.52,-3.78,0.63,3.29,2.09,-2.13,2.86,-3.33],
[-3.68,-3.54,1.66,-4.11,7.39,2.08,-2.59,-6.94,-2.26,4.33]
]
你可以看到,如果你需要获取每行的 mean
,那么你会发现 x
的维度是3 * 10。
theMean = np.mean(x1,axis=1)
不要忘记 import numpy as np
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
l = map(float,l)
print '%.2f' %(sum(l)/len(l))
通过使用以下PYTHON代码,找到列表中的平均值:
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print(sum(l)//len(l))
试一下,很容易。
print reduce(lambda x, y: x + y, l)/(len(l)*1.0)
或者像之前发布的那样
sum(l)/(len(l)*1.0)
1.0 是为了确保您获得浮点数除法
sum(L) / float(len(L))
的意思是计算列表 L 的平均值。在调用代码中处理空列表,可以使用if not L: ...
来判断。 - n611x007