如何在julia中使用嵌套列表理解
如何将以下代码转换成嵌套列表如何在julia中使用嵌套列表理解,julia,Julia,如何将以下代码转换成嵌套列表 node_x = 5 node_y = 5 node_z = 5 xyz = Matrix(undef, node_x*node_y*node_z,3) ii = 0 dx = 1.0 for k in 0:node_z-1 for j in 0:node_y-1 for i in 0:node_x-1 x = i * dx y = j * dx
node_x = 5
node_y = 5
node_z = 5
xyz = Matrix(undef, node_x*node_y*node_z,3)
ii = 0
dx = 1.0
for k in 0:node_z-1
for j in 0:node_y-1
for i in 0:node_x-1
x = i * dx
y = j * dx
z = k * dx
ii += 1
#println([x, y, z])
xyz[ii, 1] = x
xyz[ii, 2] = y
xyz[ii, 3] = z
end
end
end
在python和numpy中,我可以编写如下代码
xyz = np.array([[i*dx, j*dx, k*dx] for k in range(node_z) for j in range(node_y) for i in range(node_x)])
可以完全相同地嵌套,只是range
有点不同,但是在您的例子中有start:end
语法:
julia> [[i*dx, j*dx, k*dx] for k in 1:node_z for j in 1:node_y for i in 1:node_x]
125-element Vector{Vector{Float64}}:
[1.0, 1.0, 1.0]
[2.0, 1.0, 1.0]
⋮
[4.0, 5.0, 5.0]
[5.0, 5.0, 5.0]
要获得与Python示例相同的数组,必须排列3元素向量的维度并连接列表:
julia> vcat(([i*dx j*dx k*dx] for k in 1:node_z for j in 1:node_y for i in 1:node_x)...)
125×3 Matrix{Float64}:
1.0 1.0 1.0
2.0 1.0 1.0
⋮
4.0 5.0 5.0
5.0 5.0 5.0
非常感谢你。这正是我想要做的。@hrdhrd0422如果解决了您的问题,请接受答案。我不熟悉堆栈溢出。对此我很抱歉。