繁体   English   中英

Mapreduce 和 Filter with sum in Julia 有什么区别?

[英]What is the difference between Mapreduce and Filter with sum in Julia?

Julia 版本:1.4.0

我有这两个片段,我认为它们应该是等效的,但它们会产生非常不同的结果。 我错过了什么?

样本是具有 1000000 个元素的Vector{Float64} 此外,它是后验分布的随机抽样。

mapreduce(p -> p < 0.5 ? 1 : 0, +, samples) / N

sum(filter(x-> x<0.5, samples))/N

您的mapreducemap每个元素 ping 到10 相反,您希望将每个元素 map 设置为p0

julia> N = 1000000;

julia> samples = randn(1000000);

julia> mapreduce(p -> p < 0.5 ? 1 : 0, +, samples) / N
0.690901

julia> mapreduce(p -> p < 0.5 ? p : -0.0, +, samples) / N
-0.35058272143615

julia> sum(filter(x-> x<0.5, samples))/N
-0.35058272143615005

这些可能仍然会看到非常微小的差异(在这种情况下,它只是最后一个单位),因为结果将取决于求和的顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM