2018-04-30 开胃学习数学系列 - 稀疏矩阵

对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse)

當我們在做資料檢索時,如tf-idf、term count中,會發現這些matrix中只含有少量的非0數值,若document、word數量及大時,將其矩陣完整的存下來會導致Memory占用過多,甚至不夠。
此時便可以使用稀疏矩陣,不將0數值也存下來。
使用numpy的lil_matrix配合tocsr,進行一系列運作

u = empty((100 + 1, 100))
A = sparse.lil_matrix(100,100)
print(A.data)


A = sparse.lil_matrix((4, 4))
A[0, 0] = 1
A[1, 2] = 1
A[1, 3] = 2
A[2, 3] = 1
print(A.data)
print(A.rows)

# lil_matrix.data : 每個row中非0之值(column 0 至 column n)
# lil_matrix.rows : 為每個row中非0之值,其位置的column值(column 0 至 column n) 

B = A.tocsr()
print(B.data)
print(B.indices)
print(B.indptr)

#tocsr().data : row-major,非0之值
#tocsr().indices : row-major,其值非0之column位置
#tocsr().indptr : 從0開始,row-major,包含其row及其之前row,累計的非0數值總數 
[list([100])]
[list([1.0]) list([1.0, 2.0]) list([1.0]) list([])]
[list([0]) list([2, 3]) list([3]) list([])]
[1. 1. 2. 1.]
[0 2 3 3]
[0 1 3 4 4]

你可能感兴趣的:(2018-04-30 开胃学习数学系列 - 稀疏矩阵)