我想将一个数组(13x10x10)mat=matrix(2,13,10)
的每个矩阵(13x10)与另一个相同大小的矩阵(13x10)dfarray1 <- mat %*% dfarray
相乘。
我尝试了here发布的方法,但在username
之后(在更改后面提到的篇幅后更改了尺寸)长度更改(1300对1000)以及我的数组的尺寸
我觉得自己走在了正确的轨道上但不知何故最后一点都没有了。
任何帮助将不胜感激!
答案 0 :(得分:4)
尝试这样做以进行逐元素矩阵乘法。
#initiate new array with above dimensions
newarray <- array(1, dim=c(13,10,10))
#populate each matrix of the array
for (i in 1:10){
newarray[, , i] <- dfarray[, , i] * mat
}
输出:
> dim(newarray)
[1] 13 10 10
或者作为@DavidArenburg评论的替代方式:
newarray[] <- apply(dfarray, 3, `*`, mat)
答案 1 :(得分:0)
sweep
也可以在这里进行救援。对于无需初始化的单行替代方案,您可以执行以下操作:
newarray <- sweep(x=dfarray, MARGIN=c(1, 2), STATS=mat, FUN='*')
根据documentation,这会将dfarray与第一维度和第二维度上的mat相乘。
您甚至可以设置check.margin = TRUE
来检查数组大小并加快执行速度