我试图在不使用numpy
的情况下从Python矩阵中获取对角线(我真的不能使用它)。这里有人知道怎么做吗?
我想要得到的例子:
get_diagonal ([[1,2,3,4],[5,6,7,8],[9,10,11,12]], 1, 1, 1)
Result: [1, 6, 11]
或类似:
get_diagonal ([[1,2,3,4],[5,6,7,8],[9,10,11,12]], 1, 2, 1)
Result: [2, 7, 12]
直到我知道我尝试了很多东西,但没有用。
def obter_diagonal(matrix, line, column, direc):
d = []
if direc == 1:
for i in matrix:
for j in i:
if all(i == line, j == column):
d.extend(matrix[i][j])
else:
for i in matrix:
for j in i:
d.extend[len(matrix)-1-i][j]
return d
如果是
direc==1
,我需要获取从左->右,上->下的对角线。如果
direc==-1
需要获取从右->左,上->底的诊断。 最佳答案
为了得到领先的对角线,你可以做
diag = [ mat[i][i] for i in range(len(mat)) ]
甚至
diag = [ row[i] for i,row in enumerate(mat) ]
并为其他对角线玩类似的游戏。例如,对于反对角线(从右上到左下),您可以执行以下操作:
diag = [ row[-i-1] for i,row in enumerate(mat) ]
对于其他次要对角线,您必须在列表理解中使用
if
条件,例如:diag = [ row[i+offset] for i,row in enumerate(mat) if 0 <= i+offset < len(row)]
关于python - 在不使用numpy的情况下获得对角线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20447210/