在Numpy中检查矩阵是否对称

发布于 2021-01-29 15:24:01

我正在尝试使用(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)

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

关注者
0
被浏览
190
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    def check_symmetric(a, rtol=1e-05, atol=1e-08):
        return numpy.allclose(a, a.T, rtol=rtol, atol=atol)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看