【发布时间】:2011-01-29 06:15:21
【问题描述】:
我想使用 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 的答案。
【问题讨论】:
-
我使用 Mathematica 检查了排名 - 确实是 3。您在 Python 中调用的函数要么不正确,要么使用错误。
-
用法是正确的——这首先让我感到困惑。在帖子中,我解释了 rank 的作用:它计算数组的维数。 “rank-3”数组将是 list-of-lists-of-lists。
-
请注意,“排名”一词有些含糊。对于张量,等级告诉您索引的数量(例如,标量是等级为 0 的张量,向量等级为 1,矩阵等级为 2)。对于线性代数,还有你上面引用的定义。从文档字符串中,很明显 Numpy 使用了前者。