gpt4 book ai didi

ruby - 如何使用 Ruby 的注入(inject)功能计算平均值

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:55 24 4
gpt4 key购买 nike

我认为 Ruby 的 inject 方法非常适合计算总和。但是如果我必须计算平均值并使用 inject,我总是会得到这样的结果:

total_ranked_query_results = @results.count { |result| result.class == RankedQueryResult }
@results.inject(0.0) { |sum, result| result.class == RankedResult ? sum + result.average_precision : sum } / total_ranked_query_results

所以我基本上必须迭代两次才能找出有多少 RankedResults 以便计算平均值。

有没有更好的(rubyesque)方法来避免这种情况?

最佳答案

在同一次迭代中进行计数和求和:

tmp = @results.inject([0.0, 0]) { |sum, result|
if RankedResult === result
[sum.first + result.average_precision, sum.last+1]
else
sum
end
}
tmp.first / tmp.last

或者先过滤集合:

tmp = @results.filter { |result| RankedResult === result }
tmp.inject(0.0) { |sum, result| sum+result.avergage_precision } / tmp.length

关于ruby - 如何使用 Ruby 的注入(inject)功能计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com