我正在尝试打印此矩阵的对角线数字,以便得到[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]
,而不是得到对角线数字。
答案 0 :(得分:3)
您需要反对角线,因此可以使用简单的列表理解(假设matrix
是正方形的)。
[matrix[i][-(i+1)] for i in range(len(matrix))]
# [5, 9, 13, 17, 21]
答案 1 :(得分:3)
您也可以使用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())