由R中一个矩阵乘法在3D阵列中的每个矩阵片 [英] multiply each matrix slice in a 3d array by a single matrix in R

查看:205
本文介绍了由R中一个矩阵乘法在3D阵列中的每个矩阵片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个1×矩阵 =垫基质(1,1,13)

我也有一个数组,它是13×1000×10。

dfarray =阵列(1:(13 * 1000 * 10),昏暗= C(13,1000,10))

如果没有循环,我想回到这个循环的结果。

  dfarray2 =阵列(NA,昏暗= C(1,1000,10))为(ⅰ在1:10){dfarray2 [,,我] =垫%*%dfarray [,, I]
}


解决方案

一种可能性:变形 dfarray 通常的矩阵乘法和转换回3D阵列。

 垫<  - 矩阵(1,1,13)
暗淡(dfarray)LT; - C(13,1000 * 10)
dfarray1< - 垫%*%dfarray
暗淡(dfarray1)LT; - C(1,1000,10)
所有(dfarray1 == dfarray2)
[1] TRUE

Suppose I have a 1 x matrix mat=matrix(1,1,13)

I also have an array that is 13 x 1000 x 10.

dfarray = array(1:(13*1000*10),dim=c(13,1000,10))

Without looping, I want to return the results of this loop

dfarray2=array(NA,dim=c(1,1000,10))

for(i in 1:10){

dfarray2[,,i]=mat%*%dfarray[,,i]


}

解决方案

One possibility: deform the dfarray to usual matrix, multiply and transform back to 3d array.

mat <- matrix(1, 1, 13)
dim(dfarray) <- c(13, 1000*10)
dfarray1 <- mat %*% dfarray
dim(dfarray1) <- c(1, 1000, 10)
all(dfarray1==dfarray2)
[1] TRUE

这篇关于由R中一个矩阵乘法在3D阵列中的每个矩阵片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆