Creating sympy Matrices from columns
我正在尝试通过从现有矩阵中选择列(用于计算主要未成年人)来创建一个sympy矩阵。 目前,我正在这样做:
1 2 3 4 5 6 7 8 | >>> A = Matrix(3,5,[2,3,4,1,34,23,12,54,5,0,0,0,3,4,5]) >>> l = [A[:,i].T for i in [2,3,0]] >>> M = Matrix(l).T >>> M Matrix([ [ 4, 1, 2], [54, 5, 23], [ 3, 4, 0]]) |
但这对我来说似乎很浪费(特别是需要两次移调。我不知道这是否很耗时)。 有没有更好的办法? 如果我仅需要行列式,会有更好的方法吗?
您可以使用
1 2 3 4 5 6 | >>> A = Matrix(3, 5, [2,3,4,1,34,23,12,54,5,0,0,0,3,4,5]) >>> A[:, [2,3,0]] Matrix([ [ 4, 1, 2], [54, 5, 23], [ 3, 4, 0]]) |
对于不支持使用列表作为索引的较低版本,可以使用
1 2 3 4 5 | >>> Matrix.hstack(*(A.col(i) for i in [2,3,0])) Matrix([ [ 4, 1, 2], [54, 5, 23], [ 3, 4, 0]]) |
或
1 2 3 4 5 6 | >>> # from functools import reduce # For Python 3.x >>> reduce(Matrix.row_join, (A.col(i) for i in [2,3,0]), Matrix(3,0,[])) Matrix([ [ 4, 1, 2], [54, 5, 23], [ 3, 4, 0]]) |