Цикл для извлечения элементов под диагональю матрицы с использованием Python Numpy с индексацией массива - PullRequest
0 голосов
/ 09 июня 2019

в моем коде Pyhton с переменной i Я обозначаю строку матрицы A.
На каждом шаге я хочу получить все элементы перед диагональным текущим элементом A[i,i].

это код, который я использовал при индексации массива :

import numpy as np 

A = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])

n = 3;

for i in range (n):
  print(A[i,0:i-1])

Я написал этот конкретный код, следуя моим рассуждениям:

i=0) A[0, 0:-1] = doesn't exists a column -1 so this retrieves   []
i=1) A[1, 0:1-1] = A[1,0:0] → A[1,0] = 4                         [4]
i=2) A[2, 0:2-1] = A[2,0:1] → A[2,0] = 7 and A[2,1] = 8          [7 8]

Итак, я ожидаю, что результат будет:

[]
[4]
[7 8]

вместо этого я получаю следующий нежелательный вывод:

[1 2]
[]
[7]

Подскажите пожалуйста, где ошибка? Как я могу получить правильный результат? Большое спасибо!

1 Ответ

2 голосов
/ 09 июня 2019

Проблема в указанном вами индексе.

print(A[i,0:i-1])

Когда вы идентифицируете конечный индекс в Python, указанное вами значение исключается. Таким образом, 0: 3 приведет к индексам 0, 1 и 2. Вам не нужно -1, которое вы добавили. Кроме того, в Python индекс -1 означает начало до конца. Таким образом, в вашем коде, когда i = 0, вы получаете 0: -1, что означает все от 0 до последнего индекса (исключено).

Измените ваш отпечаток на это:

print(A[i,0:i])
...