python實現矩陣操作(自造輪子)

2021-10-01 18:23:28 字數 3391 閱讀 7763

沒什麼說的,下面是**,需要的同學可以自己拿去使用

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...