import numpy as np
import scipy.sparse as sp
row = np.array([0,0,1,3])
col = np.array([0,2,1,3])
data = np.array([1,6,3,7])
coo_matrix = sp.coo_matrix((data,(row,col)), shape=(4,4)).toarray()
print(coo_matrix)
结果:
coo_matrix((data, (row, col)), [shape=(M, N)])
啥么意思嘞,就是二维列表,row代表行,col代表列,data里的数据就相当于值,没有指定数据的就是用0来代替了…
优点:
1.不同稀疏格式间转换效率高(exp:CSR/CSC)
2.coo_matrix不支持元素的存取和增删,一旦创建之后,除了将之转换成其它格式的矩阵,几乎无法对其做任何操作和矩阵运算。
3.构建矩阵时,允许坐标重复
缺点:
1.不能直接运算
2.不能直接切片操作
csc_matrix: 压缩稀疏列矩阵(Compressed sparse column matrix)
优点:
1.高效的矩阵加法与乘法内积运算
2.高效的列切片操作
缺点:
1.矩阵内积操作没有CSR快
2.行切片操作慢(相比CSR)
3.转换成稀疏结构成本高(相比LIL)
lil_matrix:基于行连接存储的稀疏矩阵(Row-based linked list sparse matrix)
优点:
1.快速按行切片
2.高效地添加、删除、查找元素
缺点:
1.按列切片很慢(建议CSC)
2.算术运算LIL+LIL很慢(考虑CSR或CSC)
dok_matrix()函数的功能就是:可以高效地逐渐构造稀疏矩阵。
todense([order, out]):返回稀疏矩阵的np.matrix形式
toarray([order, out]):返回稀疏矩阵的np.array形式
tobsr([blocksize, copy]):返回稀疏矩阵的bsr_matrix形式
tocoo([copy]):返回稀疏矩阵的coo_matrix形式
tocsc([copy]):返回稀疏矩阵的csc_matrix形式
tocsr([copy]):返回稀疏矩阵的csr_matrix形式
todia([copy]):返回稀疏矩阵的dia_matrix形式
todok([copy]):返回稀疏矩阵的dok_matrix形式
tolil([copy]):返回稀疏矩阵的lil_matrix形式
官网:scipy
save_npz(file, matrix[, compressed]):以.npz格式保存稀疏矩阵
load_npz(file):导入.npz格式的稀疏矩阵
find(A):返回稀疏矩阵A中的非零元的位置以及数值