诸神缄默不语-个人CSDN博文目录
scipy官方文档:SciPy documentation — SciPy v1.9.0 Manual
scipy.sparse官方文档:Sparse matrices (scipy.sparse) — SciPy v1.9.0 Manual
scipy的稀疏矩阵感觉应该是万物之源,据我所知PyTorch的稀疏矩阵就是改自scipy,然后PyG的稀疏矩阵又改自PyTorch。
而且SciPy的稀疏矩阵是这几个里面文档最清晰的。torch_sparse不如说根本就没有文档吧!直接看源代码未免太刺激了!
最近更新时间:2022.8.17
最早更新时间:2022.8.17
scipy.sparse只能存储二维稀疏矩阵。
numpy.ndarray可以直接转换为稀疏矩阵。
*
是逐元素相乘,@
是矩阵乘法。
SciPy稀疏矩阵类别(可以通过to类别()
函数进行转换):
csc_matrix: Compressed Sparse Column format
csr_matrix: Compressed Sparse Row format
bsr_matrix: Block Sparse Row format
lil_matrix: List of Lists format
dok_matrix: Dictionary of Keys format
coo_matrix: COOrdinate format (aka IJV, triplet format)
dia_matrix: DIAgonal format
csr/csc/coo格式之间的转换是高效的线性操作。
save_npz(file, matrix[, compressed])
: Save a sparse matrix to a file using .npz format.
load_npz(file)
: Load a sparse matrix from a file using .npz format.
每个非0元素储存为行-列-值的形式。非常直观。也是最容易从邻接矩阵转换为edge index的格式,直接从row中获取头节点索引,从col中获取尾节点索引即可。
需要注意的是COO稀疏矩阵无法直接通过行索引切片,否则会报TypeError: 'coo_matrix' object is not subscriptable
,但是可以直接将其转换成csr格式,然后再切片。举例:coo_matrix1.tocsr()[slicing_begin_index:]