36

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

我正在基于Matlab 中的示例代码1在 python 中开发代码。代码的一部分使用了稀疏矩阵——它在 Matlab 中似乎有一个(烦人的)类型,我试图弄清楚我应该在 python 中使用哪种类型2 。


1:这是一个班级。大多数人都在 Matlab 中做这个项目,但我喜欢制造不必要的工作和混乱 --- 显然。

2:这是一个学术问题:我的代码以“ CSR ”格式正常工作,但我很想知道最佳用法是什么。

4

1 回答 1

44

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

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

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

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

于 2013-06-01T18:01:39.913 回答