在numpy中查找矩阵的线性相互依赖的列

时间:2014-07-30 17:24:42

标签: python numpy matrix linear-algebra

问题:我有一个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 个答案:

答案 0 :(得分:1)

据我了解这个问题,计算矩阵的Spark是你要求的子问题,因此在大多数情况下将其渲染为NP-Complete。

可能有一些算法比仅对rank(a)大小的列进行组合评估更有效,但这将是一个开始。