首页 > 解决方案 > 获取数组中从右上角到左下角的所有对角线

问题描述

我试图将矩阵中的所有对角线从右上角存储到左下角并将它们存储在一个数组中。

matrix = array([[2, 0, 0, 2],
                [3, 0, 0, 3],
                [3, 0, 0, 2],
                [0, 0, 0, 0]])

预期输出

[
 [2],
 [0, 3],
 [0, 0, 2],
 [2, 0, 0, 0],
 [3, 0, 0],
 [3, 0],
 [0]
]

我试图做的是这段代码:然而,这会让我得到从左上角到右下角的所有对角线

def get_diags_lower_left(matrix):
    return [np.fliplr(matrix).diagonal(i) for i in range(-3, 4)][::-1]

标签: pythonarraysnumpymatrix

解决方案


如果您不翻转矩阵,它会起作用。使用:

def get_diags_lower_left(matrix):
    return [matrix.diagonal(i) for i in range(-3, 4)][::-1]

将产生:

[array([2]),
 array([0, 3]),
 array([0, 0, 2]),
 array([2, 0, 0, 0]),
 array([3, 0, 0]),
 array([3, 0]),
 array([0])
]

推荐阅读