np.linalg.multi_dot 对于 R

np.linalg.multi_dot for R

我正在尝试做一个嵌套点

M <- matrix(1:9,ncol=3)
x <- c(1,2,3)

m <- M
for (op in 1:1){
m <- m %*% M
}

z = x %*% m

结果实际上是 x.dot(M.dot(M)):

228, 516, 804

在 python 中,这个循环可以减少:

x.dot(np.linalg.multi_dot([M]*2))

R 有类似的东西吗?

library(expm)

x %*% (M %^% 2)

     [,1] [,2] [,3]
[1,]  228  516  804

正如@akrun 评论的那样,您还可以使用 Reduce:

Reduce('%*%', rep(list(M), 2), init = x)

     [,1] [,2] [,3]
[1,]  228  516  804