R:如何转置更高维张量的子矩阵?

时间:2018-03-14 13:17:58

标签: r matrix transpose tensor

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

1 个答案:

答案 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