python - 如何确定矩阵在 python-numpy 中是否是奇异的?

标签 python numpy

<分区>

我不确定python-numpy是否可以帮助我们判断一个矩阵是否是奇异矩阵。我试图根据行列式做出决定,但 numpy 正在产生一些大约 1.e-10 的值,并且不确定我们应该选择什么作为临界值。

最佳答案

使用具有默认公差的 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

关于python - 如何确定矩阵在 python-numpy 中是否是奇异的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931613/

相关文章:

python - 如何使用 Python Amazon Simple Product API 获取产品价格

python - 我如何获得包含一个的numpy数组的索引

python - 多维 NumPy 数组中的轴

python - 通过沿对角线复制给定数组在 numpy 中创建矩阵的有效方法

python - 如何从 matplotlib 的 button_press_event 返回值?

python - 用 pandas 获取一个新专栏(其他元素的共识)

python - 语法错误,DEBUG 在 urls.py 中显示错误?

python - 有什么方法可以延迟计算 function.func_name 吗?

java - Jython 有没有好的 NumPy 克隆?

python - 如何正确旋转 ndarray(图像)?