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

时间:2013-04-02 02:50:53

标签: python matrix scipy sparse-matrix

Scipy有many different types of sparse matrices available。这些类型之间最重要的区别是什么,它们的预期用途有何不同?

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


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

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

1 个答案:

答案 0 :(得分:35)

很抱歉,如果我没有完全回答这个问题,但希望我能提供一些见解。

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

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

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