问题:我有一个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]
答案 0 :(得分:1)
据我了解这个问题,计算矩阵的Spark是你要求的子问题,因此在大多数情况下将其渲染为NP-Complete。
可能有一些算法比仅对rank(a)
大小的列进行组合评估更有效,但这将是一个开始。