pmap数据格式(Julia 1.1.0)

问题描述 投票:0回答:1

我有一个使用pmap运行的函数。我希望输出是一个向量 - p - 其条目是每个并行运行的迭代的输出。例如,代码如下:

@everywhere function addo(mc,mcf)

p = zeros(Int64,mcf) ;

p[mc] = mc ;

return p 

end 

pmap(mc -> addo(mc,mcf),1:1:mcf) ;

我得到的输出是

100-element Array{Array{Int64,1},1}:
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0  …  0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  
 [0, 2, 0, 0, 0, 0, 0, 0, 0, 0  …  0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  
 [0, 0, 3, 0, 0, 0, 0, 0, 0, 0  …  0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  
 ⋮                                                                
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0  …  0, 0, 0, 0, 0, 0, 0, 98, 0, 0] 
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0  …  0, 0, 0, 0, 0, 0, 0, 0, 99, 0] 
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0  …  0, 0, 0, 0, 0, 0, 0, 0, 0, 100]

相反,我需要这样的东西,p = [1,2,3,4,...,100];

如何以所需格式获得输出?

output julia pmap
1个回答
0
投票

pmap,类似于map,将你的变换函数mc -> addo(mc, mcf)应用于集合1:1:mcf中的每个元素。您的代码中的问题是,对于集合中的每个元素,您要创建一个大小为mcf的新向量,并且整个结果将成为您在每次转换中创建的数组的数组,而您想要的是pmap的结果。大小mcf。因此,对于集合中的每个元素,您应该只返回一个元素。 pmap已经为您提供了一个分组,用于对每次转换的结果进行分组。

@everywhere function addo(mc)
    return mc
end 

p = pmap(mc -> addo(mc), 1:1:mcf)

这将给你p = [1,2,3,4,...,100]

© www.soinside.com 2019 - 2024. All rights reserved.