【发布时间】:2021-02-23 08:05:46
【问题描述】:
我在 python 中比较矩阵行的读取时间,首先采用密集格式,然后采用稀疏格式。
从密集矩阵中“提取”一行大约需要 3.6e-05 秒
对于稀疏格式,我尝试了 csr_mtrix 和 lil_matrix,但对于行读取都花费了大约 1-e04 秒
我希望稀疏格式能够提供最佳性能,谁能帮助我理解这一点?
【问题讨论】:
-
一行的“提取”是什么意思? 究竟你在做什么?另外,为什么您希望稀疏矩阵在 speed 方面提供最佳性能?稀疏矩阵针对其内存利用率进行了优化。速度/内存是一种常见的权衡
-
对于提取,我的意思是 row = M[i,:],或者 row = M.getrow(i),如果它是稀疏的。我希望它会更好,至少直观,因为在稀疏格式中,我不需要实际读取所有行,而只需要读取非零值。也许我必须指定它是我拥有的一个稀疏矩阵,所以有很多零
-
密集数组是内存连续的。一些稀疏数组也是如此(即
csr)。lil数组不是,一行中的每个值都需要不同的随机访问。这显然会导致大多数访问和数学运算的性能异常差。
标签: python performance matrix sparse-matrix