乘以具有相同大小矩阵的多维数组

时间:2015-07-12 15:23:11

标签: arrays r matrix

我想将一个数组(13x10x10)mat=matrix(2,13,10)的每个矩阵(13x10)与另一个相同大小的矩阵(13x10)dfarray1 <- mat %*% dfarray相乘。

我尝试了here发布的方法,但在username之后(在更改后面提到的篇幅后更改了尺寸)长度更改(1300对1000)以及我的数组的尺寸

我觉得自己走在了正确的轨道上但不知何故最后一点都没有了。

任何帮助将不胜感激!

2 个答案:

答案 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来检查数组大小并加快执行速度