带有 R 阵列的外部产品



我有一个维度为 3x1000 的数组。事实上,每一列都是有趣的。我想用它来计算一个维度为 3x3x1000 的数组,其中板i是原始数组的列i的外积(换句话说,v %*% t(v) )。有没有一种干净的方法来做到这一点?

下面是一个示例输入矩阵和输出数组,如果是 2x4 矩阵。

mat_in <- cbind(c(1, 2), c(3, 4), c(5, 6), c(7, 8))
arr_out <- array(c(1, 2, 2, 4, 9, 12, 12, 16, 25, 30, 30, 36, 49, 56, 56, 64),
                 dim = c(2, 2, 4))

这为您提供了所需的结果:

mat_in <- cbind(c(1, 2), c(3, 4), c(5, 6), c(7, 8))
array(apply(mat_in, 2, tcrossprod), dim=c(2,2,4))
### test:
arr_out <- array(c(1, 2, 2, 4, 9, 12, 12, 16, 25, 30, 30, 36, 49, 56, 56, 64),
                 dim = c(2, 2, 4))
arr_out - array(apply(mat_in, 2, tcrossprod), dim=c(2,2,4))

相关内容

  • 没有找到相关文章

最新更新