pythonpython-3.xnumpymatrix

# Checking if a matrix is symmetric in Numpy

I'm trying to make a function with the arguments `(a,tol=1e-8)` that returns a boolean value that tells the user whether or not the matrix is symmetric (symmetric matrix is equal to its transpose). So far I have:

``````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
``````

although I keep getting an `axes isn't defined` message so I'm pretty sure that doesn't work at all...... the tests I'd like to pass are:

``````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)
``````

Any help is appreciated, thanks!

Solution

• You can simply compare it to its transpose using `allclose`

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