如何在矩阵中获取元素的两个对角线?

时间:2017-10-21 21:33:41

标签: python matrix

给定一个mxn矩阵和一个元素的索引,如何使用纯python(没有numpy或任何矩阵包)来获得包含该元素的两个对角线?

例如:

1  2  3  4
5  6  7  8
9 10 11 12
0  1  0  1

给定元素(1,2),我可以得到主对角线:[2,7,12]和[4,7,10,0]。我已经看过this post了,但我不在乎把矩阵包裹起来。此外,我很难理解这个解决方案,因此我无法重新编写它以满足我的需求。

1 个答案:

答案 0 :(得分:0)

这是在 Pure Python ™中实现您想要的东西:

mat = [[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [ 0,  1,  0,  1]]

def get_diags(mat, i0, j0):
    """ Return both diagonals that contain element mat[i0][j0]. """
    height, width = len(mat), len(mat[0])
    summ, diff = i0+j0, i0-j0
    diag1, diag2 = [], []
    for i in range(height):
        for j in range(width):
            if i-j == diff:
                diag1.append(mat[i][j])
            if i+j == summ:
                diag2.append(mat[i][j])

    return diag1, diag2

print(get_diags(mat, 1, 2))  # -> ([2, 7, 12], [4, 7, 10, 0])