資料結構 三元組實現稀疏矩陣的儲存

2021-09-29 10:19:06 字數 1574 閱讀 8416

三元陣列從左向右儲存依次為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相加的結果儲存...