首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python中的百分比限制对平均值进行修整?

用Python中的百分比限制对平均值进行修整?
EN

Stack Overflow用户
提问于 2013-10-18 04:42:50
回答 3查看 14.2K关注 0票数 21

我试图计算一个数组的修整平均,它不包括异常值。

我发现有一个名为scipy.stats.tmean的模块,但它要求用户根据绝对值而不是百分比值指定范围。

在Matlab中,我们有m = trimmean(X,percent),这正是我想要的。

我们有对应的Python吗?

EN

回答 3

Stack Overflow用户

发布于 2014-08-24 15:40:20

至少对于ciplyv0.14.0,有一个专用的函数(均值):

代码语言:javascript
运行
复制
from scipy import stats
m = stats.trim_mean(X, 0.1) # Trim 10% at both ends

里面用了stats.trimboth

源代码中可以看出,使用proportiontocut=0.1,将使用80%的数据计算平均值。注意,scipy.stats.trim_mean不能处理np.nan

票数 25
EN

Stack Overflow用户

发布于 2013-10-18 05:50:16

(编辑:这个答案的上下文是scipy.stats.trim_mean还没有文档化。既然它是公开可用的,那么就使用该函数,而不是滚动您自己的函数。我以下的答案是为了历史目的而保留的。)

您还可以按照MatLab文档中的说明自行实现整个过程。

以下是Python 2中的代码:

代码语言:javascript
运行
复制
from numpy import mean
def trimmean(arr, percent):
    n = len(arr)
    k = int(round(n*(float(percent)/100)/2))
    return mean(arr[k+1:n-k])
票数 9
EN

Stack Overflow用户

发布于 2019-01-22 16:55:18

这里有一个使用数学库地板的手动实现..。

代码语言:javascript
运行
复制
def trimMean(tlist,tperc):
    removeN = int(math.floor(len(tlist) * tperc / 2))
    tlist.sort()
    if removeN > 0: tlist = tlist[removeN:-removeN]
    return reduce(lambda a,b : a+b, tlist) / float(len(tlist))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19441730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档