我想使用 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 选项面临的问题是它按列填充元素。
您可以permutedims
对reshape
结果执行如下操作:
\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要记住两件事:
\ndims
您传递给的尺寸大小 ( )reshape
应更改为匹配permutedims
(4, 3, 2
变为3, 4, 2
此处) 后尺寸最终将到达的位置。reshape
通常不会进行复制,而是返回原始数组本身的不同视图 - 因此,如果您修改结果,它也会reshape
修改。a
如果您想要这种行为,请permutedims(...)
使用 ,而不是PermutedDimsArray(...)
。 归档时间: |
|
查看次数: |
469 次 |
最近记录: |