0

我有一个使用 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];

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

4

1 回答 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]

于 2019-03-08T06:47:39.157 回答