我有一个使用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];
如何获得所需格式的输出?
答案 0 :(得分:0)
pmap
与map
类似,将转换函数mc -> addo(mc, mcf)
应用于集合1:1:mcf
中的每个元素。代码中的问题是,对于集合中的每个元素,您正在创建一个大小为mcf
的新向量,并且总体结果成为您在每次转换中创建的数组的 array ,而您想要的是pmap
的大小为mcf
。因此,对于集合中的每个元素,您应该只返回一个元素。 pmap
已经为您提供了一个集合,将每个转换的结果分组。
@everywhere function addo(mc)
return mc
end
p = pmap(mc -> addo(mc), 1:1:mcf)
这将给您p = [1,2,3,4,...,100]
。