[英]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
您的mapreduce
是map
每个元素 ping 到1
或0
。 相反,您希望将每个元素 map 设置为p
或0
。
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.