當運算資料數量很大且稀疏的時候,使用稀疏的資料儲存格式可以節省大量的儲存空間且加快計算速度。本文介紹三種比較常見的稀疏矩陣表示方式:coo(coordinate format座標表示),csr(compressed sparse row行壓縮),csc(compressed sparse column列壓縮)。
>>> import scipy
>>> import numpy as np
>>> row_idx = np.array([0,0,1,2,2,3,3,3])
>>> col_idx = np.array([0,3,1,2,3,0,1,3])
>>> values = np.array([4,2,1,5,7,6,3,8])
>>> coo_mat = scipy.sparse.coo_matrix((values, (row_idx , col_idx)),shape = (4,4)).toarray()
>>> coo_mat
array([[4, 0, 0, 2],
[0, 1, 0, 0],
[0, 0, 5, 7],
[6, 3, 0, 8]])
row_idx 和col_idx 指定values 中每個資料對應的行下標和列下標。
把非零資料排成一列,並從0開始建立索引,row_ptr指定在哪個索引位置進行換行。例如,稀疏矩陣的第二行是1,那麼就在索引2處進行切割。
把非零資料排成一列,並從0開始建立索引,col_ptr指定在哪個索引位置進行換行。例如,稀疏矩陣的第二列是1、3,那麼就在索引2處進行切割。注意到csc的資料是按列順序排列,和csr有所不同。
稀疏矩陣的儲存
class unit def init self,val none,i none,j none 乙個三元組 self.val val self.i i self.j j class xishumatrix def init self self.matrix def destroy self self...
稀疏矩陣儲存方式
在資料預處理中,我們需要採集前的資料是非常龐大的。不妨將資料集d視作乙個矩陣,每一行對應乙個樣本,每一列對應某個特徵。而在現實生活中,例如文件分類任務,以每乙個字詞作為乙個特徵,特徵屬性多大成千上萬,即數千數萬列,而相當一部分特徵對於所考慮的問題具有 稀疏性 也就是矩陣中許多列與當前學習任務無關。這...
稀疏矩陣的壓縮儲存
include include using namespace std templateclass sparsematrix sparsematrix 訪問稀疏矩陣中row行col中的元素 t access int row,int col it return invalid for size t i...