newb在這裏,我想比較一個矩陣和它的轉矩矩陣與tollerance之間的差異。首先,我需要檢查它是一個正方形,然後如果差異與tollerance.I出現錯誤,最後兩行代碼無法訪問。輸出應該是真真爲以上,但我只得到了第一個真正的(即它是一個方陣。代碼無法訪問 - 錯誤
import numpy as np
a= np.array(([[1, 2, 3,],[2, 3, 4],[3, 4, 1]]))
def check_symmetric(a,tol):
b = a.transpose(1, 0)
print (a)
print(b)
rows = a.shape[1]
col = a.shape[0]
z= abs(a-b)
print(z)
if rows != col: #check to make sure the list is a square
return False
return True;
result = (abs(a - b) <= tol).all()
print(result)
print check_symmetric(a,tol=1e-8)
謝謝,我如何讓它報告它是正確的或假的正方形,然後繼續。 – chrischris
據我所知,你不想「報告」它是方形的。如果它是對稱的,你想返回。當你知道它不是方形的時候,你會返回'假',因爲那樣它就不可能是對稱的。如果你不回到那裏,你知道它是方形的,繼續下去。你應該刪除'return True'行,而不是'print(result)','return result'。如果矩陣是正方形和對稱的,那麼這將是「真」;如果是正方形而不是對稱,則爲「假」。 –
或者,如果要在檢查它是否真正對稱之前打印「是的,它是方形的」,然後使用「打印」。但不要回報。如果你返回,那就是函數的結束。 –