将矩阵创建为具有来自另一个矩阵的列的子集

时间:2014-09-05 19:51:09

标签: python numpy matrix sage submatrix

在给定列索引的列表(或元组)的情况下,我需要通过从另一个矩阵中选择列的子集来生成新的矩阵。

以下是我正在处理的代码(不仅仅是尝试创建一个新矩阵,但对于你有一些上下文可能会很有趣。)

A = matrix(QQ,[
[2,1,4,-1,2],
[1,-1,5,1,1],
[-1,2,-7,0,1],
[2,-1,8,-1,2]
])
print "A\n",A
print "A rref\n",A.rref()
p = A.pivots()
print "A pivots",p

使用以下输出:

A
[ 2  1  4 -1  2]
[ 1 -1  5  1  1]
[-1  2 -7  0  1]
[ 2 -1  8 -1  2]
A rref
[ 1  0  3  0  0]
[ 0  1 -2  0  0]
[ 0  0  0  1  0]
[ 0  0  0  0  1]
A pivots (0, 1, 3, 4)

现在我希望从matrix对象中轻松找到一个方法,它允许通过给元组p作为参数来构造一个包含列子集的新矩阵,但是找不到类似的东西

如何以圣人友好的方式解决这个优雅的任何想法? (避免for循环和多余的代码)

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用matrix_from_columns方法:A.matrix_from_columns(p)

答案 1 :(得分:1)

刚刚找到了如何以最简单,最简洁的方式做到这一点:

A[:,p]