本文简要介绍 python 语言中 numpy.linalg.matrix_rank
的用法。
用法:
linalg.matrix_rank(A, tol=None, hermitian=False)
使用 SVD 方法返回数组的矩阵秩
数组的秩是数组中大于 tol 的奇异值的数量。
- A: {(M,), (…, M, N)} 数组
输入向量或矩阵堆栈。
- tol: (…)数组,浮点数,可选
低于该阈值的 SVD 值被视为零。如果tol是无,并且
S
是一个具有奇异值的数组M, 和eps
是数据类型的 epsilon 值S
, 然后tol被设定为S.max() * max(M, N) * eps
.- hermitian: 布尔型,可选
如果为真,则 A 被假定为 Hermitian(如果为实值则对称),从而可以使用更有效的方法来查找奇异值。默认为 False。
- rank: (…)数组
A级。
参数:
返回:
注意:
检测排名缺陷的默认阈值是对奇异值大小的测试A。默认情况下,我们识别小于的奇异值
S.max() * max(M, N) * eps
表示等级不足(使用上面定义的符号)。这是 MATLAB 使用的算法 [1]。它也出现在数字食谱在讨论线性最小二乘的 SVD 解决方案 [2]。此默认阈值旨在检测考虑 SVD 计算数值错误的排名缺陷。想象一下 A 中的一列是 A 中其他列的精确(浮点)线性组合。计算 A 上的 SVD 通常不会产生完全等于 0 的奇异值:最小 SVD 值的任何差异从 0 开始是由于 SVD 计算中的数值不精确造成的。我们针对小 SVD 值的阈值考虑了这种数值不精确性,默认阈值将检测这种数值排名缺陷。即使 A 的某些列的线性组合不完全等于 A 的另一列,而只是在数值上非常接近 A 的另一列,阈值也可以声明矩阵 A 秩不足。
我们选择默认阈值是因为它被广泛使用。其他阈值也是可能的。例如,2007 年版的其他地方数字食谱还有一个替代阈值
S.max() * np.finfo(A.dtype).eps / 2. * np.sqrt(m + n + 1.)
.作者将此阈值说明为基于“expected roundoff error”(第 71 页)。上述阈值处理 SVD 计算中的浮点舍入误差。但是,您可能有更多关于 A 中错误来源的信息,这将使您考虑使用其他容差值来检测有效秩不足。最有用的公差度量取决于您打算在矩阵上使用的操作。例如,如果您的数据来自不确定性大于浮点 epsilon 的不确定性测量,则选择接近该不确定性的容差可能更可取。如果不确定性是绝对的而不是相对的,则容差可能是绝对的。
参考:
MATLAB 参考文档,“Rank”https://www.mathworks.com/help/techdoc/ref/rank.html
W. H. Press、S. A. Teukolsky、W. T. Vetterling 和 B. P. Flannery,“数值食谱(第 3 版)”,剑桥大学出版社,2007 年,第 795 页。
1:
2:
例子:
>>> from numpy.linalg import matrix_rank >>> matrix_rank(np.eye(4)) # Full rank matrix 4 >>> I=np.eye(4); I[-1,-1] = 0. # rank deficient matrix >>> matrix_rank(I) 3 >>> matrix_rank(np.ones((4,))) # 1 dimension - rank 1 unless all 0 1 >>> matrix_rank(np.zeros((4,))) 0
相关用法
- Python numpy linalg.matrix_power用法及代码示例
- Python numpy linalg.multi_dot用法及代码示例
- Python numpy linalg.svd用法及代码示例
- Python numpy linalg.pinv用法及代码示例
- Python numpy linalg.eigh用法及代码示例
- Python numpy linalg.tensorinv用法及代码示例
- Python numpy linalg.LinAlgError用法及代码示例
- Python numpy linalg.solve用法及代码示例
- Python numpy linalg.det用法及代码示例
- Python numpy linalg.cond用法及代码示例
- Python numpy linalg.inv用法及代码示例
- Python numpy linalg.eig用法及代码示例
- Python numpy linalg.lstsq用法及代码示例
- Python numpy linalg.norm用法及代码示例
- Python numpy linalg.slogdet用法及代码示例
- Python numpy linalg.tensorsolve用法及代码示例
- Python numpy linalg.qr用法及代码示例
- Python numpy linalg.cholesky用法及代码示例
- Python numpy linalg.eigvals用法及代码示例
- Python numpy linalg.eigvalsh用法及代码示例
- Python numpy linspace用法及代码示例
- Python numpy lib.NumpyVersion用法及代码示例
- Python numpy lib.Arrayterator用法及代码示例
- Python numpy legendre.legint用法及代码示例
- Python numpy laguerre.lagone用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.linalg.matrix_rank。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。