假设我有一个大小的张量[1:92,1:13,1:2000],我需要转换每个1:92矩阵并重新调整我的张量到[1:92,1:2000,1 :13]。 当然我可以使用一个循环,单独转换每个矩阵并将它们组合成一个新的张量,但我的直觉告诉我应该有一个更优雅的方法来做到这一点。 在我看来,扫描功能是正确的方向,现在需要几个小时的时间来解决它并摆脱想法。
答案 0 :(得分:3)
是的,有一个很好的方法:
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