Scipy sparse matrices - purpose and usage of different implementations

时间秒杀一切 提交于 2019-12-03 02:19:53

问题


Scipy has many different types of sparse matrices available. What are the most important differences between these types, and what is the difference in their intended usage?

I'm developing a code in python based on a sample code1 in Matlab. One section of the code utilizes sparse matrices - which seem to have a single (annoying) type in Matlab, and I'm trying to figure out which type I should use2 in python.


1: This is for a class. Most people are doing the project in Matlab, but I like to create unnecessary work and confusion --- apparently.

2: This is an academic question: I have the code working properly with the 'CSR' format, but I'm interesting in knowing what the optimal usages are.


回答1:


Sorry if I'm not answering this completely enough, but hopefully I can provide some insight.

CSC (Compressed Sparse Column) and CSR (Compressed Sparse Row) are more compact and efficient, but difficult to construct "from scratch". Coo (Coordinate) and DOK (Dictionary of Keys) are easier to construct, and can then be converted to CSC or CSR via matrix.tocsc() or matrix.tocsr().

CSC is more efficient at accessing column-vectors or column operations, generally, as it is stored as arrays of columns and their value at each row.

CSR matrices are the opposite; stored as arrays of rows and their values at each column, and are more efficient at accessing row-vectors or row operations.



来源:https://stackoverflow.com/questions/15755270/scipy-sparse-matrices-purpose-and-usage-of-different-implementations

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!