【发布时间】:2020-09-26 12:19:01
【问题描述】:
我遇到了用for循环累加数组的问题(我的数组叫做condition_list,每一行存储一个唯一的参数配置)。
下面的代码是我想象的构建这个数组的代码:
param1_vals = [1.0f0 2.0f0 3.0f0]; # specific values here don't matter
param2_vals = [1.0f0 2.0f0 3.0f0]; # specific values here don't matter
param3_vals = [1.0f0 2.0f0 3.0f0]; # specific values here don't matter
condition_list = zeros(Float32, 1, 3) # initialize condition_list
for ii = 1:length(param1_vals)
for jj = 1:length(param2_vals)
for kk = 1:length(param3_vals)
row_to_stack = [param1_vals[ii], param2_vals[jj], param3_vals[kk])
condition_list = vcat(condition_list, row_to_stack)
end
end
end
condition_list = condition_list[2:end,:] # pop off that first row (leftover of the initialization)
因此,生成的 condition_list 的每一行都应该具有 param1_vals 、 param2_vals 和 param3_vals 的每个值的唯一配置。
我遇到的问题是关于局部变量的范围——当使用vcat 时,我在循环的最内层收到了condition_list is not defined 错误。如果我不能使用数组累积,解决这个问题的最儒略的方法是什么?或者也许有一些使用push! 的解决方案?
另外,有没有一种方法可以在不做我最后做的愚蠢的“弹出第一行”的事情的情况下积累一个数组?您可以从零行 3 列数组开始并在其上累积行吗?
【问题讨论】:
标签: arrays for-loop scope julia accumulate