在Numpy中检查矩阵是否对称

我正在尝试使用(a,tol=1e-8)返回布尔值的参数制作一个函数,该值告诉用户矩阵是否对称(对称矩阵等于其转置矩阵)。到目前为止,我有:

def check_symmetric(a, tol=1e-8):

if np.transpose(a, axes=axes) == np.transpose(a, axes=axes):

return True

def sqr(s):

rows = len(s)

for row in sq:

if len(row) != rows:

return False

return True

if a != sqr(s):

raise ValueError

尽管我不断收到axes isn't defined消息,所以我很确定这根本不起作用……我想通过的测试是:

e = np.eye(4)

f = np.diag([1], k=3)

g = e[1:, :]

print(check_symmetric(e))

print(not check_symmetric(e + f))

print(check_symmetric(e + f * 1e-9))

print(not check_symmetric(e + f * 1e-9, 1e-10))

try:

check_symmetric(g)

print(False)

except ValueError:

print(True)

任何帮助表示赞赏,谢谢!

回答:

您可以简单地将其与其转置进行比较 allclose

def check_symmetric(a, rtol=1e-05, atol=1e-08):

return numpy.allclose(a, a.T, rtol=rtol, atol=atol)

以上是 在Numpy中检查矩阵是否对称 的全部内容, 来源链接: utcz.com/qa/399745.html

回到顶部