在Python/R中使用稀疏矩阵的优缺点是什么?

8
我正在使用Python处理大型稀疏矩阵(从文本生成的文档-特征矩阵)。这需要相当长的处理时间和内存来处理,因此我认为使用稀疏矩阵可以提供一些改进。但我担心使用稀疏矩阵库会使其难以与其他Python(和通过rpy2的R)模块连接。
已经有经验的人能否提供一些建议?在性能、可扩展性和兼容性方面,在Python/R中使用稀疏矩阵的优缺点是什么?
2个回答

1

有几种方法可以表示稀疏矩阵(R SparseM软件包的文档报告了20种不同的存储稀疏矩阵数据的方式),因此与所有解决方案的完全兼容可能是不可能的。这些选项的数量也表明,没有一种适用于所有情况的最佳解决方案。

根据您在哪个矩阵上进行重量级数字计算例程(numpy或R)的位置,选择numpy稀疏矩阵或R的SparseM(通过rpy2)。


1

在Python中使用稀疏矩阵本身可能并不是一个好主意。你看过numpy/scipy中的稀疏矩阵了吗?

Numpy带来了巨大的好处,它主要使用C代码提供Python性能增益。

从我在R中进行文本处理的有限经验来看,其性能使其几乎无法用于除探索性数据分析之外的任何事情。

无论如何,你都不应该使用普通列表来表示稀疏矩阵,否则它们将需要很长时间才能被处理完。


我看过这份文档,但是我很难理解其中的含义。稀疏矩阵类是否与其他库兼容?我可以期待哪些速度/内存方面的提升? - Abe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接