我需要找到主对角线上方和下方元素的总和。我不知道如何调整算法以仅对这些数字求和。这是我到目前为止的代码,其中 A 是矩阵
A = []
N = int(raw_input("Input matrix size: "))
for i in range(0, N):
row = []
for j in range(0, N):
row.append(int(raw_input("Input elements: ")))
A.append(row)
sum = 0
for i in range(0, N):
sum += A[i][i]
print sum
sum2 = 0
for i in range(0, N):
for j in range(i+1, N):
sum2 += A[i][j]
print sum2
我想我应该使用更多的 for 语句。
谢谢
您可以使用np.triu
, np.tril
and np.trace
计算这些总和(您的问题没有具体说明是否允许您利用杠杆numpy
):
import numpy as np
np.random.seed(0)
A = np.random.randint(0,10,size=(5,5))
Gives:
[[5 0 3 3 7]
[9 3 5 2 4]
[7 6 8 8 1]
[6 7 7 8 1]
[5 9 8 9 4]]
Then:
upper_sum = np.triu(A).sum()-np.trace(A)
lower_sum = np.tril(A).sum()-np.trace(A)
Yields:
34
73
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)