【问题标题】:How to choose multiple columns from a sympy matrix? Broken indexing?如何从 sympy 矩阵中选择多列?索引损坏?
【发布时间】:2019-11-07 17:39:29
【问题描述】:

我正在尝试从 sympy 矩阵中选择多列。但是,索引无法按预期工作。代码

import sympy as sp

stdA = sp.Matrix(
  [
    [-2, 1, 1, 0],
    [1, 1, 0, 1]
  ]
)

b = sp.Matrix(
  [
    [3],
    [2]
  ]
)

B1 = stdA[:, [0, 1]]
B2 = stdA[:, [0, 2]]
B3 = stdA[:, [0, 3]]
B4 = stdA[:, [1, 2]]
B5 = stdA[:, [1, 3]]
B6 = stdA[:, [2, 3]]

print("std A =", stdA)
print("b =", b)

print("B1 =", B1)
print("B2 =", B2)
print("B3 =", B3)
print("B4 =", B4)
print("B5 =", B5)
print("B6 =", B6)

打印

看到B3 的问题及其后面的矩阵了吗?它应该是B3 = Matrix([[-2, 1], [0, 1]])。我认为切片 Sympy 矩阵会产生它们的副本,所以 stdA 不应该就地改变。

是什么导致了这种错误行为,如何从具有简单索引的矩阵中选择特定列?

【问题讨论】:

    标签: python-3.x matrix indexing sympy


    【解决方案1】:

    您请求了所有行和列 0 和 3。这就是您得到的:

    >>> B3
    Matrix([
    [-2, 0],
    [ 1, 1]])
    

    Matrix 将内容显示为行列表。

    【讨论】:

    • 啊,当然。出于某种原因,我一心想要获取列列表。
    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2018-09-17
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多