【发布时间】:2019-08-04 10:23:48
【问题描述】:
我正在尝试找到一种更有效的方法来在 R 中对以下矩阵进行编码: 设 A 和 C 是两个维数为 (n, n, m) 的 3D 数组, B 是维数 (m, m) 的矩阵,则 M 是一个 (n, n) 矩阵,这样:
M_ij = SUM_kl A_ijk * B_kl * C_ijl
for (i in seq(n)) {
for (j in seq(n)) {
M[i, j] <- A[i,j,] %*% B %*% C[i,j,]
}
}
可以使用 TensorA 包使用 i 和 j 作为平行维度来编写此代码,但我更愿意使用基本 R 对象。
einstein.tensor(A %e% log(B), C, by = c("i", "j"))
谢谢!
【问题讨论】:
-
A[I,j,] 不是向量吗?您不能通过省略 I 或 j 然后进行矩阵乘法将其编写为单个循环吗?如果你想“放弃”循环,应该有一种方法 apply