Julia 有没有办法以行优先方式重塑和填充元素?

Rag*_*der 4 julia

我想使用 Julia 来重塑数组,如下所示:

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
Run Code Online (Sandbox Code Playgroud)

进入这个:

   a = 4*3*2 Array
 
   [[[1,  2,  3] 
     [4,  5,  6]
     [7,  8,  9]
     [10, 11, 12]
 
    [[13, 14, 15]
     [16, 17, 18]
     [19, 20, 21]
     [22, 23, 24]]
Run Code Online (Sandbox Code Playgroud)

但是,我不想专门使用“for 循环”来执行此操作,任何内置函数对我来说都是理想的选择,例如 reshape 选项。目前,我在 Julia 中的 reshape 选项面临的问题是它按列填充元素。

sun*_*ica 5

您可以permutedimsreshape结果执行如下操作:

\n
\n\njulia> permutedims(reshape(1:24, 3, 4, 2), (2, 1, 3))\n4\xc3\x973\xc3\x972 Array{Int64, 3}:\n[:, :, 1] =\n  1   2   3\n  4   5   6\n  7   8   9\n 10  11  12\n\n[:, :, 2] =\n 13  14  15\n 16  17  18\n 19  20  21\n 22  23  24\n\n\n
Run Code Online (Sandbox Code Playgroud)\n

要记住两件事:

\n
    \n
  • dims您传递给的尺寸大小 ( )reshape应更改为匹配permutedims(4, 3, 2变为3, 4, 2此处) 后尺寸最终将到达的位置。
  • \n
  • reshape通常不会进行复制,而是返回原始数组本身的不同视图 - 因此,如果您修改结果,它也会reshape修改。a如果您想要这种行为,请permutedims(...)使用 ,而不是PermutedDimsArray(...)
  • \n
\n