我正试图在julia中旋转一个三维数组,就好像它代表三维空间中的物理对象一样。从本质上讲,我想知道是否有一种方法可以沿着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
等函数。将它们与CCD_ 4结合使用,可以达到预期的效果。下面的示例是针对维度3
中的阵列的每个切割在维度1
和2
上的旋转。
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