使用Julia创建三个(或更高)维数组

2Cu*_*bed 4 arrays julia

在Julia中,;可用于创建二维数组.

julia> [1 2; 3 4]
2x2 Array{Int64,2}:
 1  2
 3  4
Run Code Online (Sandbox Code Playgroud)

是否可以使用类似的语法来创建三维(或更高维)的数组?以下是有效的,但我不确定是否有更清洁,更好的方法.

julia> reshape(collect(1:8), 2, 2, 2)
2x2x2 Array{Int64,3}:
[:, :, 1] =
 1  3
 2  4

[:, :, 2] =
 5  7
 6  8
Run Code Online (Sandbox Code Playgroud)

Tas*_*nou 10

我想最干净的手动语法是通过cat命令,例如:

cat(3, [1 2 ;3 4], [5 6 ; 7 8]);   % concatenate along the 3rd dimension
Run Code Online (Sandbox Code Playgroud)

  • 如果你定义`zcat(args ...)= cat(3,args ...)`,那么也许`zcat([1 2; 3 4],[5 6; 7 8])`是干净/清晰的. (3认同)
  • @DanGetz可以更进一步,使用一个可用的二进制中缀运算符,如:`const ++ = zcat; [1 2; 3 4] ++ [5 6; 7 8] ++ [9 10; 11 12]`例如. (3认同)

Ale*_*ley 5

我想你想要一个列表理解?当您要创建更复杂的数组时,这将使事情变得更容易。

就像是:

[x+1 for x=1:first, y=1:second, z=1:third]
Run Code Online (Sandbox Code Playgroud)

将给出一个first X second X third由 填充的维数组x+1

有关更多信息,请参阅http://docs.julialang.org/en/release-0.4/manual/arrays/#compressiveons :)

  • 这并不是真正必要的,因为对于任何大于 2 x 2 x 2 的东西来说都会很麻烦,而且使用 reshape 也很方便。 (4认同)