R 将数据帧转换为三倍于其大小的稀疏矩阵 库(矩阵) 根据定义,稀疏矩阵是大多数条目为零的矩阵。在大型稀疏矩阵的情况下,通过在压缩方案中表示数据,可以显著减少计算时间和内存需求方面的计算资源

R 将数据帧转换为三倍于其大小的稀疏矩阵 库(矩阵) 根据定义,稀疏矩阵是大多数条目为零的矩阵。在大型稀疏矩阵的情况下,通过在压缩方案中表示数据,可以显著减少计算时间和内存需求方面的计算资源,r,sparse-matrix,R,Sparse Matrix,常用且相对简单的稀疏矩阵压缩方案包括将矩阵表示为三个向量: 一个向量包含矩阵中所有非零项的值 另外两个向量分别包含行和列索引,从而定义第一个向量中列出的非零值在矩阵中的位置 通过使用这种压缩方案,可以避免存储大量的零。此外,使用这些表示法,可以跳过几个无用的数值操作,例如耗时的零乘法。因此,如果矩阵足够大且稀疏,则稀疏矩阵压缩方案非常强大 然而,将稀疏矩阵压缩方法应用于稠密矩阵毫无意义。原因是第一个向量的大小与原始矩阵的大小基本相同。此外,还有两个大小相同的整数向量。这与您的观察结果一致,即

常用且相对简单的稀疏矩阵压缩方案包括将矩阵表示为三个向量:

  • 一个向量包含矩阵中所有非零项的值
  • 另外两个向量分别包含行和列索引,从而定义第一个向量中列出的非零值在矩阵中的位置
通过使用这种压缩方案,可以避免存储大量的零。此外,使用这些表示法,可以跳过几个无用的数值操作,例如耗时的零乘法。因此,如果矩阵足够大且稀疏,则稀疏矩阵压缩方案非常强大


然而,将稀疏矩阵压缩方法应用于稠密矩阵毫无意义。原因是第一个向量的大小与原始矩阵的大小基本相同。此外,还有两个大小相同的整数向量。这与您的观察结果一致,即总大小约为三倍。

据我所知,
稀疏矩阵
仅在稀疏时才保存内存?你的矩阵显然是一个稠密的矩阵,你希望它如何为你节省内存?@Psidom绝对正确;如果您正在寻找压缩密集矩阵的方法:这种方法在许多情况下都存在,但这是一个复杂的主题。它们的适用性取决于上下文,即矩阵中数据的使用情况。一个流行的例子是图像文件的压缩。
library(Matrix)
a<-data.frame(1:1000)
object.size(a)
  4672 bytes

b<-as.matrix(a)
object.size(b)
  4464 bytes

d<-as(b,'dgCMatrix')
object.size(d)
  13520 bytes

e<-Matrix(b, sparse = TRUE)
object.size(e)
 13520 bytes