给定三元序对
sparse1 = [ [5, 6, 4], [1, 2, 3], [2, 1, 6], [3, 1, 9], [4, 5, 12] ]
转换成一般矩阵
def restore(sparse): #三元序对转为稀疏矩阵 row = sparse[0][0] column = sparse[0][1] array = [[0] *column for i in range(row)] #先建立空阵列,每一列有 column个0*共有row列 k = 1 #从第一列开始 而非第0列开始 while k<=sparse[0][2]: array[sparse[k][0]][sparse[k][1]]=sparse[k][2] k+=1 return array
将一般矩阵转换成三元序对
def store(array): #将稀疏矩阵储存三元序对 row=len(array) #计算三元阵列的total row column=len(array[0]) #计算三元阵列的total column s=[] #建立空的阵列 count=0 #计算所有非0值 for i in range(row): #计算所有非0值 for j in range(column): if array[i][j]!=0: count+=1 s.append([row,column,count]) #储存总数 for i in range(row): #将非0值储存成三元序对 for j in range(column): if array[i][j] !=0: s.append([i,j,array[i][j]]) return s
看结果
array = restore(sparse1)print("给定三元序对,还原矩阵:",array)store(array)three=store(array)print("给定稀疏矩阵,转成三元序对:",three)#依照row major 排序