在numpy中查找矩阵的线性相关列

0 投票
1 回答
1516 浏览
提问于 2025-04-18 15:22

问题:我有一个 MxN 的矩阵,其中 M 大于等于 N。我想找出这个矩阵中线性相关的列向量组。

我希望能在 numpy 中找到一个快速简单的方法来实现这个。

>>> a = np.random.randn(7, 6)
>>> a[:, 3] = 2*a[:, 0]-a[:, 4]
>>> a[:, 5] = 3*a[:, 1]

我在寻找一个叫做 get_column_groups 的函数,它会返回

>>> get_column_groups(a)
array([0, 1, 2, 0, 0, 1])

如果这个函数还能返回每个组的秩,那就更好了,比如:

>>> groups, group_ranks = get_column_groups(a)
>>> groups    
array([0, 1, 2, 0, 0, 1])
>>> group_ranks
[2, 1, 1]

1 个回答

1

根据我对这个问题的理解,计算矩阵的Spark是你所请求的内容中的一个子问题,因此在大多数情况下,这个问题是NP完全的。

可能有一些算法能比简单地组合评估列(最多到rank(a)的大小)做得更好,但这可以作为一个起点。

撰写回答