gpt4 book ai didi

python - 如何在 Python 3.3.5 中添加矩阵的对角线

转载 作者:行者123 更新时间:2023-11-28 17:39:40 25 4
gpt4 key购买 nike

我正在使用 numpy。我的任务是:

“编写一个函数 sumOfDiagonal,它有一个列表类型的参数。列表是一个 4x4 的二维整数数组(4 行和 4 列整数)。该函数返回整数的总和从左上角到右下角的对角线位置。该函数应为列表返回 14以下。您可以假设该列表始终是一个 4x4 二维整数数组。4 9 2 5

3 1 10 6

7 2 5 1

8 8 1 4"

我在这方面非常挣扎。我尝试了几种方法但一无所获。起初我试过:

def sumOfDiagonal (list1: list):

 summation1=[i.split(", ")[0] for i in list1]

返回(求和1)

print (sumOfDiagonal ([[4, 9, 2, 5], [3, 1, 10, 6], [7, 2, 5, 1], [8, 8, 1, 4,]]) )

因为我在另一个线程上看到据说可以做到这一点,并且我认为我可以将输入数组拆分为各个列表以帮助开始,但是我得到了一个关于没有属性的错误......我刚刚又试了一次,我得到了关于调用外部函数的错误

然后我在另一个方向做了几次其他尝试。我现在拥有的是:

def sumOfDiagonal (list1: list):

i=0
j=0
summation1=0
for row in list1:
for i in row:

for column in list1:
for j in column:

summation1=list1[i j],row[i]+summation1

返回(求和1)

print (sumOfDiagonal ([[4, 9, 2, 5], [3, 1, 10, 6], [7, 2, 5, 1], [8, 8, 1, 4,]]) )

这显然是行不通的,但我之前有一些没有语法错误的版本,只有逻辑错误(输出 44)

我觉得应该是

def sumOfDiagonal (list1: list):

i=0
j=0
summation1=0
summation2=0
for row in list1:
summation1=row[1]+summation1
i+=i

for column in list1:
summation2=column[i]+summation2
i+=i

返回(求和1+求和2)

print (sumOfDiagonal ([[4, 9, 2, 5], [3, 1, 10, 6], [7, 2, 5, 1], [8, 8, 1, 4,]]) )

我是否接近于正确,我该如何纠正我的大量失败?

提前致谢

最佳答案

当我手找一个矩阵的迹时,我先看左上角,然后将它添加到第二行的第二个元素,然后是第三行的第三个元素,依此类推。这将指导我们在这里。这可能是编程逻辑灵感的一个很好的来源 - 如果您可以通过算法手动完成,您就可以对其进行编程。

总之,我觉得你想多了。这里有两个选项,假设有一个列表列表,如您的示例所示。

def sumOfDiagonal(matrix):
sum = 0
for i in range(len(matrix)):
sum += matrix[i][i] #These are the diagonal elements
return sum

或者,如果您想一次完成所有操作并发现 range(len(x)) 是非 pythonic 的,

def sumOfDiagonal2(matrix):
return sum([matrix[i][i] for i,_ in enumerate(matrix)])

关于python - 如何在 Python 3.3.5 中添加矩阵的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26321545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com