
所有的情況都講完了,下面上完整的示范代碼(沒有numpy庫記得pip install numpy):
import numpy as np
class RelationMatrix():
def __init__(self):
self.matrix = None
def getMatrix(self):
GUIDANCE = """請以字串形式輸入關系矩陣,輸入python串列形式的字串,如:
|1,0,1|
|1,0,0|
|0,0,0|
則輸入:[[1,0,1],[1,0,0],[0,0,0]]
輸入資料時不要換行!
"""
print(GUIDANCE)
self.matrix = np.array(eval(input("請輸入關系矩陣:")))
print(self.matrix)
def isReflexive(self):
if (self.matrix.diagonal() == 1).all():
return True
else:
return False
def isAntiReflexive(self):
if (self.matrix.diagonal() == 0).all():
return True
else:
return False
def isSymmetry(self):
if (self.matrix.T == self.matrix).all():
return True
else:
return False
def isAntiSymmetric(self):
matrix = self.matrix.copy()
np.fill_diagonal(matrix, 0)
product = matrix * matrix.T
if np.count_nonzero(product) == 0:
return True
else:
return False
def isTransitive(self):
indexes = (np.argwhere(self.matrix == 1)).tolist()
for i in indexes:
for j in indexes:
if ((i[1] == j[0]) and ([i[0], j[1]] not in indexes)):
return False
return True
def judgeRelationship(self):
try:
self.getMatrix()
if self.isReflexive():
print("該矩陣是自反的")
if self.isAntiReflexive():
print("該矩陣是反自反的")
if self.isSymmetry():
print("該矩陣是對稱的")
if self.isAntiSymmetric():
print("該矩陣是反對稱的")
if self.isTransitive():
print("該矩陣是傳遞的")
except Exception as err:
print(err)
print("輸入內容不合法,請核對后重試!")
if __name__ == '__main__':
rm = RelationMatrix()
rm.judgeRelationship()
運行效果圖:

更多numpy使用教程:numpy中文檔案
如有疑惑,留言解答
如有錯誤,聯系更正
如有侵權,聯系洗掉
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354647.html
標籤:python
