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

标签 python arrays numpy matrix diagonal

我正在使用 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/

相关文章:

jquery - 如何在 HTML 中存储数据库项目列表?

python - 绘制一个看起来像球体的球体

python - 类实例没有用于在类外部传递对象的属性 'function_name' - python

python - 是否声称使用点表示法的 Python 方法例如 `.sort()` 不适用于字符串 true 以外的类型?

python - 如何解决Django应用程序名称与外部库冲突

javascript - 从数组数组中对日期 mm/dd/yyyy 字段进行排序

php - 如何使用这种特定格式的数据,如笛卡尔坐标? (php)

C char**,字符串数组空指针

Python 数组赋值

python - 如何使用 numpy 对矩阵中的多行进行向量化运算