2014-09-05 105 views
0

我需要通过从给定列索引的列表(或元组)的列索引获得通过从另一个矩阵中选择列的子集而生成的新矩阵。将矩阵创建为具有来自另一个矩阵的列的子集

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

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环路和多余的代码)

谢谢!

回答

1

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

A[:,p] 
3

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