這篇文章主要介紹了Python 稀疏矩陣-sparse 儲存和轉換的相關資料,需要的朋友可以參考下
##稀疏矩陣-sparsep#
from scipy import sparse
稀疏矩陣的儲存形式
在科學與工程領域中求解線性模型時經常出現許多大型的矩陣,這些矩陣中大部分的元素都為0,稱為稀疏矩陣。用NumPy的ndarray數組保存這樣的矩陣,將很浪費內存,由於矩陣的稀疏特性,可以通過只保存非零元素的相關信息,從而節約內存的使用。此外,針對這種特殊結構的矩陣編寫運算函數,也可以提高矩陣的運算速度。
scipy.sparse庫中提供了多種表示稀疏矩陣的格式,每種格式都有不同的用處,其中dok_matrix和lil_matrix適合逐漸添加元素。 dok_matrix從dict繼承,它採用字典保存矩陣中不為0的元素:字典的鍵是一個保存元素(行,列)資訊的元組,其對應的值為矩陣中位於(行,列)中的元素值。顯然字典格式的稀疏矩陣很適合單一元素的新增、刪除和存取操作。通常用來逐漸加入非零元素,然後轉換成其它支援快速運算的格式。
a = sparse.dok_matrix((10, 5)) a[2:5, 3] = 1.0, 2.0, 3.0 print a.keys() print a.values()
[(2, 3), (3, 3), (4, 3)] [1.0, 2.0, 3.0]
b = sparse.lil_matrix((10, 5)) b[2, 3] = 1.0 b[3, 4] = 2.0 b[3, 2] = 3.0 print b.data print b.rows
[[] [] [1.0] [3.0, 2.0] [] [] [] [] [] []] [[] [] [3] [2, 4] [] [] [] [] [] []]
row = [2, 3, 3, 2] col = [3, 4, 2, 3] data = [1, 2, 3, 10] c = sparse.coo_matrix((data, (row, col)), shape=(5, 6)) print c.col, c.row, c.data print c.toarray()
[3 4 2 3] [2 3 3 2] [ 1 2 3 10] [[ 0 0 0 0 0 0] [ 0 0 0 0 0 0] [ 0 0 0 11 0 0] [ 0 0 3 0 2 0] [ 0 0 0 0 0 0]]
以上是Python稀疏矩陣之sparse儲存與轉換的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!