简介
coo_matrix: 坐标格式的矩阵(Coodrdinate format matrix)
优点:
- 不同稀疏格式间转换效率高(exp:CSR/CSC)
- coo_matrix不支持元素的存取和增删,一旦创建之后,除了将之转换成其它格式的矩阵,几乎无法对其做任何操作和矩阵运算。
- 构建矩阵时,允许坐标重复
data = [1, 1, 1]
row = [0, 1, 1]
col = [0, 1, 1]
matrix = sp.coo_matrix((data, (row, col)), shape=(3, 3))
matrix.todense()
out:
matrix([[1, 0, 0],
[0, 2, 0],
[0, 0, 0]])
缺点:
- 不能直接运算
- 不能直接切片操作
常用方法:
tocsc()
tocsr()
todense() # 转化为 numpy.matrix 类型
csc_matrix: 压缩稀疏列矩阵(Compressed sparse column matrix)
优点:
- 高效的矩阵加法与乘法内积运算
- 高效的列切片操作
缺点:
- 矩阵内积操作没有CSR快
- 行切片操作慢(相比CSR)
- 转换成稀疏结构成本高(相比LIL)
常用方法:
matrix.dot(matrix) # 矩阵相乘
csr_matrix: 压缩稀疏行矩阵(Compressed sparse row matrix)
优点:
- 高效的矩阵加法与乘法内积运算
- 高效的行切片操作
- CSR格式在存储稀疏矩阵时非零元素平均使用的字节数(Bytes per Nonzero Entry)最为稳定(float类型约为8.5,double类型约为12.5)CSR格式常用于读入数据后进行稀疏矩阵计算。
缺点:
- 列切片操作慢(相比CSC)
- 转换成稀疏结构成本高(相比LIL)
lil_matrix:基于行连接存储的稀疏矩阵(Row-based linked list sparse matrix)
优点:
- 快速按行切片
- 高效地添加、删除、查找元素
缺点:
- 按列切片很慢(建议CSC)
- 算术运算LIL+LIL很慢(考虑CSR或CSC)
总结
- 加载数据文件时使用coo_matrix快速构建稀疏矩阵,然后调用to_csr()、to_csc()、to_dense()把它转换成CSR或稠密矩阵(numpy.matrix)
- coo_matrix格式常用于从文件中进行稀疏矩阵的读写,而csr_matrix格式常用于读入数据后进行稀疏矩阵计算.
https://www.cnblogs.com/YangZnufe/p/8413374.html
https://www.cnblogs.com/zhangchaoyang/articles/5483453.html