Извлечь анти-диагональ 2D списка - PullRequest
4 голосов
/ 06 апреля 2019

Я пытаюсь распечатать диагональные числа этой матрицы, чтобы получить [5, 9, 13, 17, 21].

Я пытался изменить переменные в цикле for.

matrix = [[ 1,  2,  3,  4,  5],
          [ 6,  7,  8,  9, 10],
          [11, 12, 13, 14, 15],
          [16, 17, 18, 19, 20],
          [21, 22, 23, 24, 25]]

diagonal = []
last_column = len(matrix[0]) - 1
for row in matrix:
    diagonal.append([row][0][4])

print(diagonal)

Вместо диагональных чисел я получаю [5, 10, 15, 20, 25].

Ответы [ 2 ]

3 голосов
/ 06 апреля 2019

Вы также можете использовать numpy.diagonal

import numpy
matrix = [[ 1,  2,  3,  4,  5],
          [ 6,  7,  8,  9, 10],
          [11, 12, 13, 14, 15],
          [16, 17, 18, 19, 20],
          [21, 22, 23, 24, 25]]
arr=numpy.array(matrix)
print(numpy.fliplr(arr).diagonal())

Выходы:

[ 5  9 13 17 21]

Для получения диагонали используйте print(arr.diagonal())

3 голосов
/ 06 апреля 2019

Вам нужна антидиагональность, чтобы вы могли использовать простое понимание списка (при условии, что matrix - квадрат).

[matrix[i][-(i+1)] for i in range(len(matrix))]
# [5, 9, 13, 17, 21]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...