""" 稀疏矩阵动态增加行
原理:创建一个1行n列的新矩阵与原矩阵合并-->tocsr() 成为新的稀疏矩阵.动态增加的目的达成
"""
import sys
import scipy.sparse as ss
import numpy as np
a = ss.dok_matrix((0, 100), dtype=np.int16)
print('a1-->', a.shape, type(a))
for i in range(3):
b = ss.dok_matrix((1, 100), dtype=np.int16)
b[0, 1] = i+1
a = ss.vstack([a, b]).tocsr() # 转csr()是方便元素计算(加、减)
print('a{}-->'.format(i+2), a.shape, sys.getsizeof(a))
print(a.todense(), sys.getsizeof(a))
a[1, 2] += 20
print(a.todense(), type(a), sys.getsizeof(a))
# 统计
tf = int(np.sum(a[1])) # 统计一行的和
print('tf', tf)
nonz = np.nonzero(a[1]) # 取出一行的非零元素
print(nonz)
nonsum = len(nonz[0]) + 1 # 非零元素个数+1
print(nonsum)
参考: