首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用空的Boost累加器

使用空的Boost累加器
EN

Stack Overflow用户
提问于 2011-10-13 03:51:44
回答 2查看 551关注 0票数 2

我很好奇,从这个代码片段中得到的平均值是多少?累加器应为空。

代码语言:javascript
复制
boost::accumulators::accumulator_set<
    int,
    boost::accumulators::features<boost::accumulators::tag::mean>
> Accumulator;

int Mean = boost::accumulators::mean(Accumulator);

当我测试它的时候,平均值是非零的。有没有什么方法可以告诉我,平均值是为空数据集取的?为什么“均值”的结果值不是零?

我在累加器库的文档中四处寻找,但是找不到这个问题的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-13 04:21:31

对于一组空值,任何值都是有效的平均值。也就是说,对于任何xx * 0 = 0都是有效的。

您可以向您的accumulator_set添加一个count特性,并查询它是否为0。

票数 2
EN

Stack Overflow用户

发布于 2020-04-07 20:08:20

无需添加count功能,因为mean累加器基于countsum累加器

来自boost User's Guide

平均值取决于求和和计数累加器...平均值累加器的结果仅仅是和累加器的结果除以计数累加器的结果。

所以你只需要验证计数是否大于0:

代码语言:javascript
复制
bool isEmpty = boost::accumulators::count(Accumulator) == 0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7745731

复制
相关文章

相似问题

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