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.__init__()
def create(self,i=none,j=none,v=none): # 插入三元組
if v != 0:
u = unit(v,i,j)
def get_maxi(self): # 獲取矩陣的最大i(其實就是矩陣的m值)
maxi = -1
for v in self.matrix:
if maxi < v.i:
maxi = v.i
return maxi
def get_maxj(self): # 獲取矩陣的最大j(其實就是矩陣的n值)
maxj = -1
for v in self.matrix:
if maxj < v.j:
maxj = v.j
return maxj
def print(self): # 以人比較好看的方式列印矩陣
m = self.get_maxi()
n = self.get_maxj()
matrix =
for i in range(m+1):
tmp =
for j in range(n+1):
for v in self.matrix:
matrix[v.i][v.j] = v.val
for i in range(m+1):
print(matrix[i])
def copy_matrix(self): # 複製矩陣
t = xishumatrix()
t.matrix = self.matrix
return t
def add_matrix(self,t): # 相加
for i in t.matrix:
for j,v in enumerate(self.matrix):
if i.i == v.i and i.j == v.j:
self.matrix[j].val = i.val + v.val
break
else:
def sub_matrix(self,t): # 相減
for i in t.matrix:
for j,v in enumerate(self.matrix):
if i.i == v.i and i.j == v.j:
self.matrix[j].val = i.val - v.val
break
else:
i.val = -i.val
def mults_matrix(self,t): # 相乘
tmp =
while self.matrix:
cur_i = self.matrix[0].i
cur_is = [self.matrix[0]] # 儲存某行
for i in self.matrix[1:]:
if i.i == cur_i:
cur_j = t.matrix[0].j
cur_js = [t.matrix[0]] # 儲存某列
for i in t.matrix[1:]:
if i.j == cur_j:
sums = 0
for i in cur_is: # 進行相乘
for j in cur_js:
if i.j == j.i: # 如果p相等
sums += i.val * j.val
break
tmp_unit = unit(sums,cur_i,cur_j)
for i in cur_is:
self.matrix.remove(i)
for j in cur_js:
t.matrix.remove(j)
self.matrix = tmp
def reverse(self): # 轉置
for i,v in enumerate(self.matrix):
self.matrix[i].i,self.matrix[i].j = v.j,v.i
x = xishumatrix()
x.create(1,1,1)
x.create(2,2,2)
x.create(3,3,3)
x.print()
t = xishumatrix()
t.create(1,1,1)
t.create(2,2,2)
t.create(3,3,4)
t.print()
# x.sub_matrix(t)
# x.print()
x.mults_matrix(t)
x.print()
t = xishumatrix()
t.create(1,2,3)
t.create(1,3,2)
t.create(3,2,1)
t.print()
t.reverse()
t.print()
稀疏矩陣儲存格式
當運算資料數量很大且稀疏的時候,使用稀疏的資料儲存格式可以節省大量的儲存空間且加快計算速度。本文介紹三種比較常見的稀疏矩陣表示方式 coo coordinate format座標表示 csr compressed sparse row行壓縮 csc compressed sparse column列...
稀疏矩陣儲存方式
在資料預處理中,我們需要採集前的資料是非常龐大的。不妨將資料集d視作乙個矩陣,每一行對應乙個樣本,每一列對應某個特徵。而在現實生活中,例如文件分類任務,以每乙個字詞作為乙個特徵,特徵屬性多大成千上萬,即數千數萬列,而相當一部分特徵對於所考慮的問題具有 稀疏性 也就是矩陣中許多列與當前學習任務無關。這...
稀疏矩陣的壓縮儲存
include include using namespace std templateclass sparsematrix sparsematrix 訪問稀疏矩陣中row行col中的元素 t access int row,int col it return invalid for size t i...