假设我有方阵:
matrix = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
Call list negative diagonal is [9, 14], [1, 6, 11, 16], [3, 8]
Call list positive diagonal is [2, 5], [4, 7, 10, 13], [12, 15]
我的想法:
def get_negative_diagonals(matrix):
diagonals = []
for i in range(matrix.shape[0]):
diagonal = np.diag(matrix, i)
if len(diagonal) > 1:
diagonals.append(diagonal.tolist())
for i in range(1, matrix.shape[1]):
diagonal = np.diag(matrix, -i)
if len(diagonal) > 1:
diagonals.append(diagonal.tolist())
return diagonals
def get_positive_diagonals(matrix):
flipped_matrix = np.fliplr(matrix)
diagonals = get_negative_diagonals(flipped_matrix)
for diagonal in diagonals:
diagonal.reverse()
return diagonals
但这不是我要的结果,上面两个函数的输出:
negative diagonals: [[1, 6, 11, 16], [2, 7, 12], [3, 8], [5, 10, 15], [9, 14]]
positive diagonals: [[13, 10, 7, 4], [9, 6, 3], [5, 2], [14, 11, 8], [15, 12]]
我尝试使用 numpy 来获取上面的列表,但结果并不完全符合我的预期。有没有办法像我一开始描述的那样返回输出?也许使用 numpy 或其他任何东西。