我正在用Python进行实验练习。 我制作了代码,但我不知道如果矩阵是对称的或斜对称的,我将如何进行测试。问题是: 1.如果矩阵是对称的或斜对称的,则进行测试。 2.我如何使用断言来确保矩阵是方阵? 3.有人可以重新检查我的代码吗? 谢谢!
def symmetric(X):
H = X.copy()
D = len(H)
F = len(H[0])
listx = []
listy = []
for d in range(0,D):
listx.append(0)
for f in range(0,F):
listy.append(listx)
K = np.array(listy)
for i in range(0,D):
for j in range(0,F):
K[j][i] = H[i][j]
return K
def skewsymmetric(Y):
H = Y.copy()
D = len(H)
F = len(H[0])
listx = []
listy = []
R = -1
for d in range(0,D):
listx.append(0)
for f in range(0,F):
listy.append(listx)
K = np.array(listy)
for i in range(0,D):
for j in range(0,F):
K[j][i] = H[i][j]*R
return K
if __name__ == "__main__":
X = np.array([[20,120,200],[120,10,150],[200,150,30]])
Y = np.array([[0,1,-3],[-1,0,-2],[3,2,0]])
print "X =", X
print "Y =", Y
print "This is Symmetric matrix:", symmetric(X)
print "This is Skew-symmetric matrix:", skewsymmetric(Y)
答案 0 :(得分:6)
有一种简单的方法可以使用numpy检查矩阵是否对称:
(arr.transpose() == arr).all()
如果你需要检查它是否是偏斜对称的,那么在比较中改变第二个“arr”的符号:
(arr.transpose() == -arr).all()