从R中的两个向量生成这种矩阵的最快方法是什么?

爪中数据
u <- rnorm(1000)
v <- c(1,2,3)

A <- matrix(0,nrow=3,ncol=1000)
for (i in 1:3)
{
  for (j in 1:1000)
    {
       A[i,j] <- (u[j]-v[i])^2
    }
}

我相信一定有更好的方法来生成矩阵一个载体üv有人可以帮我吗?

罗纳克·沙(Ronak Shah)

我们可以使用outer

u <- rnorm(10)
v <- c(1,2,3)

B <- t(outer(u, v, `-`)^2)
identical(A, B)
#[1] TRUE

基准测试:

library(microbenchmark)

u <- rnorm(100000)
v <- rnorm(100)

p1 = function(){
  A <- matrix(0,nrow=length(v),ncol=length(u))
  for (i in 1:length(v))
  {
    for (j in 1:length(u))
    {
      A[i,j] <- (u[j]-v[i])^2
    }
  }
}


p2 = function(){
  B <- t(outer(u, v, `-`)^2)
}

microbenchmark(p1(),p2(),times = 10)

#Unit: milliseconds
# expr       min        lq      mean    median        uq       max neval
# p1() 3359.8119 3367.9753 3383.0087 3374.1323 3397.3018 3420.7159    10
# p2()  326.7757  352.0144  459.9654  386.4121  584.3815  694.2599    10

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C ++中从两个从属向量中进行随机选择的最快方法是什么?

在CUDA中对M较小的两个MxN矩阵执行逐矢量点积的最快方法是什么?

在两个numpy向量中的成对元素上用函数填充矩阵的最快方法?

在Rust中计算两个f64向量的点积的最快方法是什么?

用Python(和Cython)计算两个矩阵的点积最快的方法是什么

在R中两个瘦高个矩阵之间计算按行点积的最快方法

计算两个相同形状矩阵的行之间的余弦相似度的最快方法是什么

在AWS的linux中的两个卷之间复制文件(db)的最快方法是什么?

在Kotlin中获取最少两个或多个整数的最快方法是什么?

在C中复制两个相邻字节的最快方法是什么?

在R中构造此稀疏矩阵的最快方法是什么

连接两个向量的最佳方法是什么?

在两个列表中合并具有相同特定键和值的字典的最快方法是什么?

在两个 Azure SQL 数据库之间传输视图数据的最快方法是什么?

用Java连接两个String的最快方法是什么?

将两个二维 numpy 数组相乘的最快方法是什么?

检查两个java对象的Deep Equal的最快,最有效的方法是什么?

发送两个后续HTTP请求的最快方法是什么?

在两个活动之间传递图像的最快方法是什么?

计算两个uint8_t变量之间的差异的最快方法是什么?

在两个硬盘之间传输数据的最快方法是什么?

用Python计算两个图像之间的绝对差之和的最快方法是什么?

查看数组是否有两个公共元素的最快方法是什么?

查找两个列表之间是否有相交的最快方法是什么?

是否可以在R中以以下方式将两个向量或矩阵与向量相乘?

使用numpy从两个对象向量生成对矩阵

通过使用两个向量来创建新向量的好方法是什么?

在Matlab中,通过将两个正交向量的元素相加来生成矩阵

用R或RCpp计算矩阵中多少行都为TRUE的最快方法是什么?