如何在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中计算平均值?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算python字典中列表元素的平均值?

如何在Python中按十年计算列的平均值

在python中计算指数移动平均线

如何在python中计算列表的方差?

如何使用 python + NumPy / SciPy 计算滚动/移动平均值?

python数组:计算每行的平均值