Julia 声明并初始化三维数组

Julia 声明并初始化三维数组,julia,Julia,我想在Julia中初始化一个具有常量项的三维数组。对于2d情况,我可以使用 A = [1 2; 3 4] 3d阵列有类似的简短语法吗?目前还没有,尽管下面的内容还不错 A = zeros(2,2,2) A[:,:,1] = [1 2; 3 4] A[:,:,2] = [10 20; 30 40] 可以使用cat或重塑功能来完成任务:(使用Julia-1.0.0测试): 对于较高的Array维度,必须嵌套cat调用:cat(cat(…,dims=3)、cat(…,dims=3)、dims=4)

我想在Julia中初始化一个具有常量项的三维数组。对于2d情况,我可以使用

A = [1 2; 3 4]

3d阵列有类似的简短语法吗?

目前还没有,尽管下面的内容还不错

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

可以使用
cat
重塑
功能来完成任务:(使用Julia-1.0.0测试):

对于较高的
Array
维度,必须嵌套
cat
调用:
cat(cat(…,dims=3)、cat(…,dims=3)、dims=4)

重塑
功能允许“一次”构建更高维度的
数组,即不需要嵌套调用:

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

实际上,仅使用列表理解就可以在julia中声明多维数组

julia>a=[x+y+z代表1:2的x,y∈ 2:3,z=3:4]
2×2×2数组{Int64,3}:
[:, :, 1] =
6  7
7  8
[:, :, 2] =
7  8
8  9
朱莉娅>尺寸(a)
(2, 2, 2)
julia>ndims(a)
3.

目前,公认的答案是肯定您提出的问题在当时是不可能的,而不是证明它是可能的,即使对于高维数组也是如此。你认为这种情况可以接受吗?
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