稀疏矩陣就是指乙個矩陣中的大部分元素都是0或者是某乙個相同的元素,而稀疏矩陣往往有一些有規律的形式,比如上三角、下三角等等,這種有規律的矩陣又稱為特殊矩陣。
特殊矩陣的儲存需要根據特殊矩陣哪點特殊,然後用數學的手段來進行儲存,這裡就不展開了。
我們只講一般情況下的稀疏矩陣的儲存方式。
儲存方式常見的有兩大類,大家也都知道,分別是順序儲存結構和鏈式儲存結構。
三元組表示法,就是定義乙個資料結構,裡面儲存了該元素的橫座標、列座標,以及該元素的值,這也是最簡單的一種表示方法。
偽位址表示法比上面高階一點,略微省了一些空間。偽位址表示法呢也需要定義乙個結構體,裡面乙個成員變數是儲存的元素的值,另外只需要乙個成員變數用於儲存它的偽位址即可。
那麼偽位址是什麼呢?偽位址就是該元素相對於這個矩陣儲存的首位址的偏移量,這樣只要經過簡單計算就可以知道其對應的橫縱座標了。
而鏈式儲存也有兩種常見的方法,分別是鄰接表表示法和十字鍊錶法。
領接表表示法如下圖所示,具體細節請自行網路查詢吧。鄰接表也廣泛用於圖的儲存中。
下圖來自:
而十字鍊錶法可以說是鄰接表的乙個變形,它的鍊錶結構就像「十」字一樣,因此而得名。它用於訪問資料比之鄰接表要方便,但是每個節點多了兩個位址指標。十字鍊錶法也常用於有向圖的儲存。
如下圖所示為十字鍊錶的每個節點的結構:
(以下兩張來自於:
下圖為乙個十字鍊錶的例子:
稀疏矩陣儲存方式
在資料預處理中,我們需要採集前的資料是非常龐大的。不妨將資料集d視作乙個矩陣,每一行對應乙個樣本,每一列對應某個特徵。而在現實生活中,例如文件分類任務,以每乙個字詞作為乙個特徵,特徵屬性多大成千上萬,即數千數萬列,而相當一部分特徵對於所考慮的問題具有 稀疏性 也就是矩陣中許多列與當前學習任務無關。這...
稀疏矩陣的儲存
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...
稀疏矩陣儲存格式
當運算資料數量很大且稀疏的時候,使用稀疏的資料儲存格式可以節省大量的儲存空間且加快計算速度。本文介紹三種比較常見的稀疏矩陣表示方式 coo coordinate format座標表示 csr compressed sparse row行壓縮 csc compressed sparse column列...