假设我有一个大小为[1:92, 1:13, 1:2000]的张量,我需要转置每个1:92矩阵,并将我的张量重塑为[1:92, 1:2000, 1:13]。
当然,我可以使用循环,分别转置每个矩阵并将它们组合成一个新的张量,但我的直觉告诉我应该有一种更优雅的方法来完成这个任务。
Sweep函数似乎是正确的方向,我已经尝试了几个小时来解决它,但想不出更好的办法。
aperm(A, c(1, 3, 2))
其中,A
代表你的数组,c(1,3,2)
表示 A
的维度应该如何重新排列。
例如:
A <- array(1:(2 * 3 * 4), 2:4)
dim(A)
# [1] 2 3 4
A[1, , ]
# [,1] [,2] [,3] [,4]
# [1,] 1 7 13 19
# [2,] 3 9 15 21
# [3,] 5 11 17 23
B <- aperm(A, c(1, 3, 2))
dim(B)
# [1] 2 4 3
B[1, , ]
# [,1] [,2] [,3]
# [1,] 1 3 5
# [2,] 7 9 11
# [3,] 13 15 17
# [4,] 19 21 23