从列创建sympy矩阵

时间:2017-05-04 08:01:15

标签: python matrix sympy

我正在尝试通过从现有Matrix中选择列来创建一个sympy Matrix(用于计算主要未成年人)。目前我这样做:

>>> 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 个答案:

答案 0 :(得分:1)

您可以使用[2, 3, 0]作为索引。

>>> 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]])

对于不支持将列表用作索引的较低版本,您可以使用Matrix.hstack

>>> Matrix.hstack(*(A.col(i) for i in [2,3,0]))
Matrix([
[ 4, 1,  2],
[54, 5, 23],
[ 3, 4,  0]])

Matrix.row_join

>>> # 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]])
相关问题