加快 R 中的稀疏矩阵乘法
Speed up sparse matrix multiplication in R
我正在尝试使用 R 中的 %*% 函数将一个矩阵(由少数 1 和多数 O 组成)与一个向量相乘,这个过程需要花费大量时间。有什么办法可以让它更快吗??
谢谢
您可以使用 Matrix 包创建稀疏矩阵。 Matrix/vector 在这种情况下乘法可能更快。例如:
library(Matrix)
library(tictoc)
set.seed(123)
v <- sample(1e4)
m <- Matrix(sample(c(0, 1), length(v) ^ 2, T, c(.99, .01)),
length(v), length(v), sparse = F)
sm <- Matrix(m, sparse = T)
tic("dense")
x <- m %*% v
toc()
#> dense: 0.094 sec elapsed
tic("sparse")
y <- sm %*% v
toc()
#> sparse: 0.006 sec elapsed
我正在尝试使用 R 中的 %*% 函数将一个矩阵(由少数 1 和多数 O 组成)与一个向量相乘,这个过程需要花费大量时间。有什么办法可以让它更快吗??
谢谢
您可以使用 Matrix 包创建稀疏矩阵。 Matrix/vector 在这种情况下乘法可能更快。例如:
library(Matrix)
library(tictoc)
set.seed(123)
v <- sample(1e4)
m <- Matrix(sample(c(0, 1), length(v) ^ 2, T, c(.99, .01)),
length(v), length(v), sparse = F)
sm <- Matrix(m, sparse = T)
tic("dense")
x <- m %*% v
toc()
#> dense: 0.094 sec elapsed
tic("sparse")
y <- sm %*% v
toc()
#> sparse: 0.006 sec elapsed