本文介绍了由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阵列中的每个矩阵片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!