我试图找出矩阵中对角线元素的总和。这里,n 是方阵的大小,a 是矩阵。有人可以向我解释一下这里发生了什么。
n = 3
a = [[11,2,4],[4,5,6],[10,8,-12]]
sum_first_diagonal = sum(a[i][i] for i in range(n))
sum_second_diagonal = sum(a[n-i-1][n-i-1] for i in range(n))
print(str(sum_first_diagonal)+" "+str(sum_first_diagonal))
最佳答案
使用对任何矩阵计算都非常强大的 numpy 库。对于您的具体情况:
import numpy as np
a = [[11,2,4],[4,5,6],[10,8,-12]]
b = np.asarray(a)
print('Diagonal (sum): ', np.trace(b))
print('Diagonal (elements): ', np.diagonal(b))
您可以使用 pip 或您在许多网站上找到的其他方式轻松安装 numpy。
如果您想要所有对角线,而不仅仅是主对角线,请检查 this这也使用 numpy。
编辑
mhawke,如果您想计算对角线(次对角线),如 wikipedia 中所述,你可以在numpy中翻转矩阵
import numpy as np
a = [[11,2,4],[4,5,6],[10,8,-12]]
b = np.asarray(a)
b = np.fliplr(b)
print('Antidiagonal (sum): ', np.trace(b))
print('Antidiagonal (elements): ', np.diagonal(b))
关于python - 矩阵中对角线元素的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35252993/