稀疏矩陣動態增加行

""" 稀疏矩陣動態增加行
原理:創建一個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)

參考:

https://blog.csdn.net/shevchenkoNIIT/article/details/77747811

https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.coo_matrix.html

https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html

https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.dok_matrix.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章