如何在python中计算平均值?
Posted
技术标签:
【中文标题】如何在python中计算平均值?【英文标题】:How to calculate mean in python? 【发布时间】:2013-12-18 05:55:12 【问题描述】:我有一个列表,我想为她计算平均值(平均值?)。 当我这样做时:
import numpy as np #in the beginning of the code
goodPix = ['96.7958', '97.4333', '96.7938', '96.2792', '97.2292']
PixAvg = np.mean(goodPix)
我收到此错误代码:
ret = um.add.reduce(arr, axis=axis, dtype=dtype, out=out, keepdims=keepdims)
TypeError: cannot perform reduce with flexible type
我试图寻求帮助,但没有找到有用的东西
谢谢大家。
【问题讨论】:
Calculating arithmetic mean (one type of average) in Python 【参考方案1】:这些东西仍然是字符串而不是浮点数。请尝试以下操作:
goodPix = ['96.7958', '97.4333', '96.7938', '96.2792', '97.2292']
gp2 = []
for i in goodPix:
gp2.append(float(i))
numpy.mean(gp2)
【讨论】:
我猜不出为什么有些答案会立即得到支持,所以那些 +8 对我来说也是个谜;至于你的答案,还不错,但我自己不会 +1,因为它比使用 numpy 的方法慢大约两倍,并且可以更短更清晰地重写为np.mean([float(i) for i in goodPix])
true,但比 numpy 方法慢两倍,我认为这意味着 2 纳秒而不是 1 纳秒?如果它不慢,不要让它更快?
@usethedeathstar 这取决于列表的长度。【参考方案2】:
将您的列表从字符串转换为 np.float:
>>> gp = np.array(goodPix, np.float)
>>> np.mean(gp)
96.906260000000003
【讨论】:
嗯,我知道你的解决方案可能更 Pythonic,但为什么我的 +7 有 n +0? @usethedeathstar:我认为你必须接受这样一个事实,即在对一个答案投了赞成票之后,人们并没有义务对所有其他正确但低劣的答案进行投票。如果 alko 的出色答案不在这里,那么可以肯定,也许这 7 个人中的一些人会支持你的。 @SteveJessop 更重要的是,对于这样一个简单的答案,你会得到 +9,而对于一个两页长的答案,人们几乎不会超过 +3 @usethedeathstar:答案越明显正确,就越有能力判断它。可能不公平,但简短的答案往往会赢得比赛是不可避免的...... @SteveJessop 刚刚检查了你的最佳答案 (150+),都是屏幕长 :)【参考方案3】:使用列表推导
>>> np.mean([float(n) for n in goodPix])
96.906260000000003
【讨论】:
【参考方案4】:如果您使用的是 python >= 3.4,则有一个统计库
https://docs.python.org/3/library/statistics.html
你可以像这样使用它的平均方法。假设您有一个数字列表,您希望找到其中的平均值:-
list = [11, 13, 12, 15, 17]
import statistics as s
s.mean(list)
它也有其他方法,例如标准差、方差、模式等。
【讨论】:
【参考方案5】:如果您不使用 numpy,计算值列表的 arithmetic mean 的明显方法是将所有元素的总和除以元素的数量,这很容易使用两个 built-ins @ 987654327@和len()
,例如:
>>> l = [1,3]
>>> sum(l)/len(l)
2.0
如果列表元素是字符串,转换它们的一种方法是使用list comprehension:
>>> s = ['1','3']
>>> l = [float(e) for e in s]
>>> l
[1.0, 3.0]
对于整数结果,请使用 //
运算符 ("floored quotient of x and y") 或使用 int()
进行转换。
对于许多其他解决方案,另请参阅Calculating arithmetic mean (one type of average) in Python
【讨论】:
以上是关于如何在python中计算平均值?的主要内容,如果未能解决你的问题,请参考以下文章