R:我能用一些指数矩阵乘法吗?
我有尺寸为5000x250的数据矩阵(X)加上额外的参数Y(尺寸:5000x1)。下面的循环为我提供了所需的结果,但计算起来需要花费很长时间R:我能用一些指数矩阵乘法吗?,r,matrix,matrix-multiplication,exponential,R,Matrix,Matrix Multiplication,Exponential,我有尺寸为5000x250的数据矩阵(X)加上额外的参数Y(尺寸:5000x1)。下面的循环为我提供了所需的结果,但计算起来需要花费很长时间 for (i in 1:ncol(X)) for (j in 1:nrow(X)) { X[j,i]=Y[j,1]^X[j,i] } 有没有办法优化这个?如果我不需要指数,我会使用矩阵乘法。谢谢 如果您构造了一个大小正确的y矩阵,则可以使用矢量化的^: x <- matrix(1:9,3) y <- matrix(1:3
for (i in 1:ncol(X))
for (j in 1:nrow(X))
{
X[j,i]=Y[j,1]^X[j,i]
}
有没有办法优化这个?如果我不需要指数,我会使用矩阵乘法。谢谢 如果您构造了一个大小正确的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
x如果您构建了一个大小正确的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
x将列向量y
转换为矩阵,并使用elementwise^
matrix(y, nrow=nrow(X), ncol=ncol(X)) ^ X
或
将列向量y
转换为矩阵,并使用elementwise^
matrix(y, nrow=nrow(X), ncol=ncol(X)) ^ X
或
X[…]是积分类型(指数之前)?X^Y
不起作用吗?如果没有,请尝试X^as.numeric(Y)
,向量回收应确保您得到所需的值。X可以在指数化之前取0、1或2。@James:我不确定您的建议是什么。X[]必须是指数。@aciM Oops,误读了Q。在这种情况下,您需要将Y加在一起。我将发布一个答案是X[…]一个整数类型(在指数之前)?X^Y
不起作用吗?如果没有,请尝试X^as.numeric(Y)
,向量回收应确保您得到所需的值。X可以在指数化之前取0、1或2。@James:我不确定您的建议是什么。X[]必须是指数。@aciM Oops,误读了Q。在这种情况下,您需要将Y加在一起。我会发布一个答案