关于python:从列创建sympy矩阵

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

但这对我来说似乎很浪费(特别是需要两次移调。我不知道这是否很耗时)。 有没有更好的办法? 如果我仅需要行列式,会有更好的方法吗?


您可以使用[2, 3, 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]])

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

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

Matrix.row_join

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