相关疑难解决方法(0)

将矩阵列与R中的向量元素相乘的最快方法

我有一个矩阵m和一个向量v.我想将第一列矩阵乘以m向量的第一个元素v,并将第二列矩阵乘以向量的第二m个元素v,依此类推.我可以使用以下代码完成它,但我正在寻找一种不需要两个转置调用的方法.我怎样才能在R中更快地做到这一点?

m <- matrix(rnorm(120000), ncol=6)
v <- c(1.5, 3.5, 4.5, 5.5, 6.5, 7.5)

system.time(t(t(m) * v))

#   user  system elapsed 
#   0.02    0.00    0.02 
Run Code Online (Sandbox Code Playgroud)

r

37
推荐指数
2
解决办法
2万
查看次数

将矩阵的每一行乘以r中的向量的好方法

我知道这是一个非常基本的问题,抱歉.

我想用矩阵乘以矩阵的每一行.所以我有:

mat=matrix(1,2,4)
vec=c(1,2,3,4)

#works but ugly:
new.mat=mat
for(i in 1:nrow(mat)){
  new.mat[i,]=mat[i,]*vec
}
Run Code Online (Sandbox Code Playgroud)

我以为我找到了'应用'的答案,但我无法以同样的方式工作.

r

5
推荐指数
1
解决办法
4159
查看次数

Python numpy或pandas相当于R函数sweep()

R功能是什么numpypandas相当于什么sweep()

详细说明:在R中假设我们有一个系数向量(比如beta - 数字类型)和一个数组(比如数据--20x5数字类型).我想在数组的每一行上叠加向量并乘以相应的元素.然后返回结果(20x5)数组我可以实现这个sweep().在下面找到示例R代码.

beta <-  c(10, 20, 30, 40)
data <- array(1:20,c(5,4))
sweep(data,MARGIN=2,beta,`*`)
#---------------
 > data
      [,1] [,2] [,3] [,4]
 [1,]    1    6   11   16
 [2,]    2    7   12   17
 [3,]    3    8   13   18
 [4,]    4    9   14   19
 [5,]    5   10   15   20

 > beta
 [1] 10 20 30 40

 > sweep(data,MARGIN=2,beta,`*`)
      [,1] [,2] [,3] [,4]
 [1,]   10  120  330  640
 [2,]   20  140  360  680
 [3,] …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy r pandas

4
推荐指数
1
解决办法
2352
查看次数

R行乘法 - restyle?

如果我有一个(批量x 5)矩阵和一个(1 x 5)矩阵,是否有更好的方法来逐行乘以它们:

> q 
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5

> z
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   11   16   21
[2,]    2    7   12   17   22
[3,]    3    8   13   18   23
[4,]    4    9   14   19   24
[5,]    5   10   15   20   25

> t(apply(z,1,function (x) {x*q})) 
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   12   33   64  105
[2,]    2   14   36   68  110
[3,]    3   16   39   72 …
Run Code Online (Sandbox Code Playgroud)

r matrix

3
推荐指数
2
解决办法
1197
查看次数

如何快速地进行大矩阵与向量的元素乘法?

我想对一个非常大的二进制矩阵的每一行进行向量的元素乘法。我的向量的长度等于我的矩阵的列数。我已经实现了使用 for 循环如下,但它非常慢。有谁知道加快速度的解决方案?

A <- c()
M # Binary matric
W <- matrix(0, nrow=nrow(M), ncol=ncol(M))
W <- data.frame(W)
for (i in 1:nrow(W)) {
    W[i,] <- M[i,] * A
}
Run Code Online (Sandbox Code Playgroud)

r

2
推荐指数
1
解决办法
1414
查看次数

标签 统计

r ×5

arrays ×1

matrix ×1

numpy ×1

pandas ×1

python ×1