Как выбрать несколько столбцов из матрицы симпы? Сломана индексация? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь выбрать несколько столбцов из матрицы симпати. Однако индексация не работает должным образом. Код

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)

печатает

Output of a Python script

См. Вопрос с B3 и матрицы после него? Предполагается читать B3 = Matrix([[-2, 1], [0, 1]]). Я думал, что нарезка матриц Sympy создает их копии, поэтому stdA не следует изменять на месте.

Что является причиной этого ошибочного поведения, и как я могу выбрать определенные столбцы из матрицы с простой индексацией?

1 Ответ

1 голос
/ 07 ноября 2019

Вы запросили все строки и столбцы 0 и 3. Вот что вы получили:

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

Матрица представляет содержимое в виде списка строк.

...