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

R: How to transpose a submatrix of a higher dimensional tensor?

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

是的,有一个很好的方法:

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