声明并初始化三维数组

时间:2014-08-29 03:44:55

标签: julia

我想用常量条目在Julia中初始化一个三维数组。对于第二种情况,我可以使用

A = [1 2; 3 4]

3d数组是否有类似的短语法?

3 个答案:

答案 0 :(得分:6)

此时不是,虽然以下内容不是太糟糕

A = zeros(2,2,2)
A[:,:,1] = [1 2; 3 4]
A[:,:,2] = [10 20; 30 40]

答案 1 :(得分:3)

一个人可以使用catreshape函数来完成任务:(已通过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