有没有办法在Julia中旋转3D数组?
我试图在 julia 中旋转 3D 数组,就好像它代表 3D 空间中的物理对象一样。本质上,我想知道是否有办法将数组沿 x、y 和/或 z 轴以 90 度为增量旋转。
在 2D 中,如果我逆时针旋转,它将是这样的......
1 2 3 3 6 9
4 5 6 -----> 2 5 8
7 8 9 1 4 7
我希望同样的逻辑也适用于 3D。
任何帮助表示赞赏。
回答
对于二维矩阵,您可以使用rotl90,rotr90和等函数rot180。这些可以结合使用mapslices以获得所需的效果。下面的示例是维度上的旋转1以及维度2中数组的每个切割3。
julia> A=collect(reshape(1:27,3,3,3))
3×3×3 Array{Int64,3}:
[:, :, 1] =
1 4 7
2 5 8
3 6 9
[:, :, 2] =
10 13 16
11 14 17
12 15 18
[:, :, 3] =
19 22 25
20 23 26
21 24 27
julia> mapslices(rotr90,A,dims=[1,2])
3×3×3 Array{Int64,3}:
[:, :, 1] =
3 2 1
6 5 4
9 8 7
[:, :, 2] =
12 11 10
15 14 13
18 17 16
[:, :, 3] =
21 20 19
24 23 22
27 26 25