arrays - 基本 R : Multiplying elements in 3-D array with loop

标签 arrays r linear-algebra vectorization matrix-multiplication

我有两个 3-D 数组,AB,每个 2 x 3 x 3。下面显示的示例(这将有助于阐明我想如何相乘)。

 A1   A2   A3                             B1   B2   B3  
 A4   A5   A6                             B4   B5   B6

 A7   A8   A9                             B7   B8   B9
 A10  A11  A12                            B10  B11  B12

 A13  A14  A15                            B13  B14  B15
 A16  A17  A18                            B16  B17  B18

我想做的是创建一个矩阵,其中 3 个 A 矩阵被平均,并且某个位置的值由相应的 B 值加权......我不好解释,但是举个例子,第一个元素是:

[(A1*B1)+(A7*B7)+(A13*B13)] / sum(B1,B7,B13).

另一个元素是:

[(A5*B5)+(A11*B11)+(A17*B17)] / sum(B5,B11,B17).

等等...结果是一个 2 x 3 矩阵。我一直在玩嵌套 for 循环的不同组合,下面显示了一个示例,但我还没有想出如何正确地做到这一点...感谢帮助。

for (j in 1:2){
     for (k in 1:3){
          ans[j*k]=sum(A[j,k,1:3]*B[j,k,1:3])/sum(B[j,k,1:3])
     }
}

最佳答案

你可以这样做:

apply(A * B, c(1,2), sum) / apply(B, c(1,2), sum)

关于arrays - 基本 R : Multiplying elements in 3-D array with loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380445/

相关文章:

javascript - 在 JavaScript 中过滤对象的对象并使用最后 7 个对象创建新数组

JavaScript : Objects with unique key within an array

c - 如何在 C 中声明指向字符数组的指针?

类 : Passing struct array giving strange result 的 C 程序

r - 使用线性近似值对 NA 观测值进行插补

c++ - 使用c++特征库求解线性最小二乘方程(动态分配)

R,在 data.frame 中找到连续时间步长的平均长度

r - 在等高线图ggplot2中绘制点

python - 执行大点/张量点积同时仅保留对角线条目的最有效方法

numpy (n, m) 和 (n, k) 到 (n, m, k)