我想用scipy计算矩阵的mathematical rank。最明显的函数numpy.rank
计算数组的维数(即标量有维数0、向量1、矩阵2等)。我知道numpy.linalg.lstsq
模块具有此功能,但我想知道是否在矩阵类的某个地方构建了这样一个基本操作。
下面是一个明确的例子:
from numpy import matrix, rank
A = matrix([[1,3,7],[2,8,3],[7,8,1]])
print rank(A)
这给了2
维度,我在这里寻找3
的答案。
Tags:
为需要在实践中完成此任务的人提供一个粗略的代码片段。随时改进。
如果
numpy
不提供排名工具,为什么不自己写呢?一种有效的计算秩的方法是通过奇异值分解-矩阵的秩等于非零奇异值的个数。
注意
eps
依赖于您的应用程序-大多数人都同意1e-12对应于零,但您可能会看到即使eps=1e-9也存在数值不稳定性。用你的例子,答案是三个。如果将第二行更改为
[2, 6, 14]
(与第一行线性相关),则答案是两个(“零”特征值是4.9960E-16)Numpy提供了
numpy.linalg.matrix_rank()
:相关问题 更多 >
编程相关推荐