How to decide a whether a matrix is singular in python-numpy?
15,238
Use np.linalg.matrix_rank
with the default tolerance. There's some discussion on the docstring of that function on what is an appropriate cutoff to consider a singular value zero:
>>> a = np.random.rand(10, 10)
>>> b = np.random.rand(10, 10)
>>> b[-1] = b[0] + b[1] # one row is a linear combination of two others
>>> np.linalg.matrix_rank(a)
10
>>> np.linalg.matrix_rank(b)
9
>>> def is_invertible(a):
... return a.shape[0] == a.shape[1] and np.linalg.matrix_rank(a) == a.shape[0]
...
>>> is_invertible(a)
True
>>> is_invertible(b)
False
Related videos on Youtube
Author by
Hailiang Zhang
Updated on September 15, 2022Comments
-
Hailiang Zhang over 1 year
I am not sure whether python-numpy can help us decide whether a matrix is singular or not. I am trying to decide based on the determinant, but numpy is producing some values around 1.e-10 and not sure what should we choose for a critical value.
-
Hailiang Zhang over 10 yearsYes, it was asking the same question, but I got a more elegant answer from here:-)
-