Scipy稀疏矩阵 - 不同实现的目的和用法

Dil*_*rix 29 python matrix scipy sparse-matrix

Scipy有许多不同类型的稀疏矩阵.这些类型之间最重要的区别是什么,它们的预期用途有何不同?

我正在基于Matlab中的示例代码1在python中开发代码.代码的一部分使用稀疏矩阵 - 在Matlab中似乎有一个(恼人的)类型,我试图找出我应该在python中使用哪种类型2.


1:这是一堂课.大多数人都在使用Matlab进行项目,但我喜欢创造不必要的工作和混乱 - 显然.

2:这是一个学术问题:我使用" CSR "格式正常运行代码,但我很有兴趣知道最佳用法是什么.

Wil*_*ill 36

对不起,如果我没有完全回答这个问题,但希望我能提供一些见解.

CSC(压缩稀疏列)和CSR(压缩稀疏行)更紧凑和有效,但难以"从头开始"构建.Coo(Coordinate)和DOK(Keys of Keys)更容易构建,然后可以通过matrix.tocsc()或转换为CSC或CSR matrix.tocsr().

CSC通常更有效地访问列向量或列操作,因为它存储为列数组及其在每行的值.

企业社会责任矩阵正好相反; 存储为每行的行数组及其值,并且在访问行向量或行操作时更有效.