三元陣列從左向右儲存依次為row(行號)、clumn(列號)、元素值(value)儲存稀疏矩陣的非0元素。
from scipy import sparse
#help(sparse)
#定義節點類
class
triplenode
(object):
def__init__
(self,row=
0,column=
0,value=0)
: self.row=row
self.clumn=column
self.value=value
#定義行號,列號,元素值
稀疏矩陣指的是多數元素為0的矩陣(95%左右)
所以如果用儲存它,是有些浪費空間的,因此,提出三元陣列的儲存形式對稀疏矩陣的非0元素進行儲存,可以大大的節省儲存空間。(降維矩陣降維成列表)
class
sparsematrix
(object):
def__init__
(self,maxsize)
: self.maxsize=maxsize
self.data=
[none
]*maxsize
for i in
range
(self.maxsize)
: self.data[i]
=triplenode(
) self.row=
0 self.column=
0 self.value=
0
借助python中scipy庫中的sparse中的coo-martix對鍊錶進行轉換。(具體的使用方方法筆者參照python稀疏矩陣的表示與運用)其儲存稀疏矩陣的原理與上述三元陣列類似,故借助這個包進行下面的程式的實現。
row =[0
,1,2
,2]col =[0
,1,2
,3]data =[1
,2,3
,0]a = sparse.coo_matrix(
(data,
(row, col)
), shape=(4
,4))
b = sparse.coo_matrix(
(row,
(data,col)
),shape=(4
,4))
print
(a.toarray())
print
(b.toarray())
print
(a.toarray(
)+b.toarray())
c=b.toarray(
)print
(c.t)
#print(coo_mat.toarray[1][2])
執行結果為
稀疏矩陣(三元組順序表實現)
定義了乙個稀疏矩陣類,有轉置和相乘,相加三個功能,主要是熟悉稀疏矩陣的三元組順序表儲存的一些操作,和一般的矩陣不同的地方,兩個轉置的演算法,第乙個是較容易想到的,書上管它叫 按需點菜 法,就是按一開始列的順序,乙個個轉為新矩陣中行的順序。第二個叫作 按位就坐 法,就是條件兩個輔助陣列,確定每一列中第...
《資料結構》 三元組的實現
在此給出三元組的c語言實現方法,h檔案與.c檔案沒有分開,寫在了乙個檔案中,可以貼上放在clockblocks中執行,或者liunx平台。include include define ok 1 define error 0 typedef int status typedef int elemtyp...
資料結構習題 稀疏矩陣加法 三元組順序表
以下為功能函式的 define maxsize 12500 最大非零元素 typedef int elemtype typedef struct tripletriple 三元組結點定義 typedef struct tsmatrixtsmatrix 三元組順序表定義 將矩陣m和矩陣t相加的結果儲存...