我想用常量条目在Julia中初始化一个三维数组。对于第二种情况,我可以使用
A = [1 2; 3 4]
3d数组是否有类似的短语法?
答案 0 :(得分:6)
此时不是,虽然以下内容不是太糟糕
A = zeros(2,2,2)
A[:,:,1] = [1 2; 3 4]
A[:,:,2] = [10 20; 30 40]
答案 1 :(得分:3)
一个人可以使用cat
或reshape
函数来完成任务:(已通过Julia-1.0.0测试):
julia> cat([1 2; 3 4], [5 6; 7 8], dims=3)
2×2×2 Array{Int64,3}:
[:, :, 1] =
1 2
3 4
[:, :, 2] =
5 6
7 8
对于更高的Array
维度,必须嵌套cat
调用:cat(cat(..., dims=3), cat(..., dims=3), dims=4)
。
reshape
函数允许“一次”构建更高维度的Arrays
,即无需嵌套调用:
julia> reshape([(1:16)...], 2, 2, 2, 2)
2×2×2×2 Array{Int64,4}:
[:, :, 1, 1] =
1 3
2 4
[:, :, 2, 1] =
5 7
6 8
[:, :, 1, 2] =
9 11
10 12
[:, :, 2, 2] =
13 15
14 16
答案 2 :(得分:0)
实际上可以仅使用列表理解来在julia中声明多维数组
julia> a = [x + y + z for x in 1:2, y ∈ 2:3, z = 3:4]
2×2×2 Array{Int64,3}:
[:, :, 1] =
6 7
7 8
[:, :, 2] =
7 8
8 9
julia> size(a)
(2, 2, 2)
julia> ndims(a)
3