python 定義大小的空矩陣_一種使用Python定義矩陣運算的原始碼
阿新 • • 發佈:2021-02-04
技術標籤:python 定義大小的空矩陣
''' 由於安裝numpy和scipy太過糟心,而且不是自己定義出來的函式使用得終究不順手; 因此我用二階列表在此定義了矩陣,並定義了兩個常用的矩陣運算:點乘與轉置。 如果有必要的話,還可以在此基底下定義其他複雜運算。 這樣一來,就不需要安裝函式包了。 本文所有函式皆已通過測試,在其定義域下執行正確。 對於非預設定義域,每個函式的註釋的第一句有說明。 ''' #矩陣生成 def aaaa(a,b): '''a,b均為正整數。返回a行b列的矩陣,每個元素都是零''' c=[] d=[] for i in range(b): c=c+[0] for i in range(a): d=d+[c] return(d) def aaab(x,a,b,c): '''將矩陣x的第a行第b列的元素修正為c''' d=[] f=[] for i in range(len(x)): if i==a-1: for j in range(len(x[i])): if j==b-1: e=c else: e=x[i][j] f=f+[e] d=d+[f] else: d=d+[x[i]] pass return(d) def aaac(x,b): '''len(x)被b整除。返回列表x按照b列分割為矩陣後的結果''' c=1 d=[] e=[] for i in range(len(x)): if i<(c*b-1): d=d+[x[i]] elif i==(c*b-1): d=d+[x[i]] e=e+[d] c=c+1 d=[] pass return(e) def aaad(x): '''返回矩陣x轉化為單層列表後的結果''' a=[] for i in x: for j in i: a=a+[j] pass return(a) #矩陣運算 def aaae(z,y): '''兩個長度相等的向量相乘''' a=0 for i in range(len(z)): a=a+z[i]*y[i] return(a) def aaaf(z,a): '''矩陣z中所有第a列的項所構成的向量''' x=[] for i in z: x=x+[i[a-1]] return(x) def aaag(z,y): '''z的列數等於y的行數。兩個矩陣點乘''' x=aaaa(len(z),len(y[0])) for i in range(len(x)): for j in range(len(x[0])): x=aaab(x,i+1,j+1,aaae(z[i],aaaf(y,j+1))) pass return(x) def aaah(z,n): '''矩陣數乘''' y=aaaa(len(z),len(z[0])) for i in range(len(z)): for j in range(len(z[0])): y=aaab(y,i+1,j+1,z[i][j]*n) pass return(y) def aaai(z,y): '''兩個大小相同的矩陣相加''' x=aaaa(len(z),len(z[0])) for i in range(len(z)): for j in range(len(z[0])): x=aaab(x,i+1,j+1,z[i][j]+y[i][j]) pass return(x) def aaaj(z): '''轉置矩陣''' x=aaaa(len(z[0]),len(z)) for i in range(len(z[0])): for j in range(len(z)): x=aaab(x,i+1,j+1,z[j][i]) pass return(x)