【问题标题】:R: Can I use some sort of matrix multiplication with exponentials?R:我可以使用某种带有指数的矩阵乘法吗?
【发布时间】:2013-11-19 11:13:03
【问题描述】:

我有尺寸为 5000x250 的数据矩阵 (X) 加上一个额外的参数 Y (Dim: 5000x1)。下面的循环给了我想要的结果,但它需要很长时间来计算。

for (i in 1:ncol(X))
  for (j in 1:nrow(X))
   {
   X[j,i]=Y[j,1]^X[j,i]
   }

有什么办法可以优化吗?如果我不需要指数,我会使用矩阵乘法。谢谢!

【问题讨论】:

  • X[...] 是整数类型吗(在指数之前)?
  • X^Y 不起作用吗?如果没有,试试X^as.numeric(Y),矢量回收应该确保你得到你想要的。
  • X 在取幂之前可以取值 0,1 或 2。
  • @James:我不确定你的建议是什么。 X[] 必须是指数。
  • @aciM 糟糕,误读了 Q。在这种情况下,您需要将 Y 重新绑定在一起。我会发布答案

标签: r matrix matrix-multiplication exponential


【解决方案1】:

将您的列向量y 转换为矩阵并按元素使用^

matrix(y, nrow=nrow(X), ncol=ncol(X)) ^ X

rep(y, times=ncol(X)) ^ X

【讨论】:

    【解决方案2】:

    如果你构造了一个大小正确的 y 矩阵,你可以使用向量化的^

    x <- matrix(1:9,3)
    y <- matrix(1:3,ncol=1)
    
    do.call(cbind,replicate(ncol(x),list(y)))^x
         [,1] [,2]  [,3]
    [1,]    1    1     1
    [2,]    4   32   256
    [3,]   27  729 19683
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 2012-05-27
      相关资源
      最近更新 更多