许多同学可能在使用python进行科学计算时用过稀疏矩阵的构造,而python的科学计算包scipy.sparse是很好的一个解决稀疏矩阵构造/计算的包。
下面我介绍一下scipy.sparse包中csc/csr矩阵的构造中一个比较难理解的构造方法:
官方文档(http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csc_matrix.html)中对csc矩阵的构造方法中最后一种:
csc_matrix((data, indices, indptr), [shape=(M, N)])对于以下代码来说:
indices代表了非零元素的行信息,它与indptr共同定位元素的行和列首先对于0列来说 indptr[0]:indptr[1]=[0,1] 再看行indices[0,1]=[0,2] 数据data[0,1]=[1,2] 说明列0在行0和2上有数据1和2
对于1列来说 indptr[1]:indptr[2]=[2] 行indices[2]=[2] 数据data[2]=[3] 说明列2在行2上有数据3
对于2列来说 indptr[2]:indptr[3]=[3,4,5] 行indices[3,4,5]=[0,1,2] 数据data[3,4,5]=[4,5,6]
所以上述代码可以得到矩阵: