沒什麼說的,下面是**,需要的同學可以自己拿去使用
from copy import deepcopy
defpretty
(matrix)
:# 優化輸出
ifisinstance
(matrix,
str)
:return
'矩陣輸出失敗!'
row =
len(matrix)
col =
len(matrix[0]
)for i in
range
(row)
:print
('|'
, end=
' ')
for j in
range
(col)
:print(""
.format
(matrix[i]
[j])
,end=
' ')
print
(' |'
, end=
'\n'
)return
'計算成功'
defdet
(matrix)
:# 求行列式的值
n =len(matrix)
if n ==2:
return
(matrix[0]
[0]* matrix[1]
[1]- matrix[0]
[1]* matrix[1]
[0])
if n ==1:
return matrix[0]
[0]else
: algebraic_cofactor_list =
# 儲存第一行每個元素的余子式
for i in
range
(n):
cofactor_matrix =
for j in
range
(n -1)
:)for k in
range
(n):
if k != i:
cofactor_matrix[j]1]
[k])
)max=0
for i in
range
(n):
max+=((
-1)**
(i))
* algebraic_cofactor_list[i]
* matrix[0]
[i]return
maxdef
transposition
(old_matrix)
:# 獲得轉置矩陣
row =
len(old_matrix)
col =
len(old_matrix[0]
) new_matrix =
for i in
range
(col):[
])for j in
range
(row)
: new_matrix[i]
[i])
return new_matrix
defadjoint
(old_matrix)
:# 獲得伴隨矩陣
n =len(old_matrix)
new_matrix =
for x in
range
(n):
)for y in
range
(n):
new_matrix[x]
)return new_matrix
defalgebraiccofactorlist
(x, y, matrix)
:# 獲得(x,y)位置的代數余子式
new_matrix = deepcopy(matrix)
new_matrix.remove(new_matrix[x]
)for i in
range
(len
(matrix)-1
):new_matrix[i]
.pop(y)
# remove是從頭查詢與值相同的元素移除,而pop是指定位置移除
algebraic_cofactor = det(new_matrix)*(
(-1)
**(x + y)
)return algebraic_cofactor
definversematrix
(matrix)
:# 返回逆矩陣
try:
adjoint_matrix = adjoint(transposition(matrix)
)for i in
range
(len
(matrix)):
for j in
range
(len
(matrix)):
adjoint_matrix[i]
[j]/= det(matrix)
new_matrix = adjoint_matrix
return new_matrix
except
:return
'矩陣可能是奇異矩陣,請輸入乙個新的矩陣!'
if __name__ ==
'__main__'
: matrix =[[
1,2,
3],[
4,5,
6],[
7,8,
9]] matrix_1 =[[
1,0,
0],[
0,2,
0],[
0,0,
3]] matrix_2 =[[
1,2,
3],[
4,5,
6],[
7,8,
10]]# matrix = transposition(matrix) # 返回轉置矩陣
# print(matrix)
# pretty(matrix) # 優化矩陣輸出
# print(det(matrix)) # 求乙個矩陣行列式的值
# print(inversematrix(matrix_1)) # 返回逆矩陣
print
(pretty(inversematrix(matrix_1)
))
輸出樣例:
|
1.000
0.000
0.000||
0.000
0.500
0.000||
0.000
0.000
0.333
|計算成功
Python 矩陣操作
numpy庫用於矩陣運算,所以一般先導入它。from numpy import import numpy as np1 矩陣建立 建立一維陣列 a1 array 1,2,3 將陣列轉為矩陣 a1 mat a1 輸出a1 matrix 1,2,3 當然也可以對矩陣操作 a1.reshape 3,1 這...
python資料去雜訊 Python實現輪廓去雜訊
完整的 實現了最小的矩形,圓形,隨意矩形 import cv2 import numpy as np refer 2018 06 30 yonv1943 2018 07 01 comment to test.png 2018 07 01 gray in threshold,hierarchy 201...
python 矩陣(mat)操作
from python的numpy庫提供矩陣運算的功能,因此我們在需要矩陣運算的時候,需要匯入numpy的包。from numpy import 匯入numpy的庫函式 import numpy as np 這個方式使用numpy的函式時,需要以np.開頭。由一維或二維資料建立矩陣 from num...