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

时间:2013-07-29 18:35:02

标签: python numpy

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

1 个答案:

答案 0 :(得分:15)

使用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