Comprobando si una matriz es simétrica en Numpy

Estoy tratando de hacer una función con los argumentos (a,tol=1e-8) que devuelven un valor booleano que le dice al usuario si la matriz es simétrica o no (la matriz simétrica es igual a su transposición). Hasta ahora tengo:

 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 

aunque sigo recibiendo un mensaje de axes isn't defined , estoy bastante seguro de que no funciona en absoluto … las pruebas que me gustaría aprobar son:

 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) 

Cualquier ayuda es apreciada, gracias!

Simplemente puede utilizar allclose

 def check_symmetric(a, tol=1e-8): return numpy.allclose(a, aT, atol=tol) 

La siguiente función también resuelve el problema:

 def check_symmetric(a, tol=1e-8): return not False in (np.abs(aa.T) < tol)