如何确定一个矩阵在python-numpy中是否是单数?

Hai*_*ang 9 python numpy

我不确定python-numpy是否可以帮助我们判断矩阵是否是单数.我试图根据行列式决定,但numpy正在产生1.e-10左右的一些值,并且不确定我们应该选择什么样的临界值.

Jai*_*ime 17

使用np.linalg.matrix_rank默认容差.关于考虑奇异值为零的适当截止值,对该函数的文档字符串进行了一些讨论:

>>> 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
Run Code Online (Sandbox Code Playgroud)