首页 > 解决方案 > 矩阵元素的算术平均值和总和

问题描述

我必须找到矩阵元素的算术平均值以及主对角线元素为负的矩阵行的元素之和。

这就是我所做的。

import numpy as np
import random
m, n = 3, 3
f_sum = 0
def row_sum(arr):
    global f_sum
    sum = 0
    for i in range(3):
        for j in range(3):
            sum += arr[i][j]

            if arr[i][i] < 0:
                f_sum = sum
        sum = 0

arr = np.zeros((3, 3))

for i in range(m):
    for j in range(n):
        arr[i][j] = random.randint(-20, 20)

row_sum(arr)
mean = round(np.mean(arr), 2)
print(arr)
print('\n', "среднее арифметическое = ", mean)
print('\n',"сумму элементов = ", f_sum)

现在我面临的问题是,在计算主对角线元素为负的那些行的元素总和时,我只得到最后一个总和。

结果看起来像这样

结果看起来像这样

标签: pythonarraysnumpy

解决方案


一个更麻木的“esque”方法是这样的

import numpy as np

n, m = 3, 3

arr = np.random.randint(-20,20, size=(n,m))
print(arr)

diag  = np.diagonal(arr)
w     = diag < 0
f_sum = np.sum(arr[w], axis=1)

print(f_sum)
  • diag您在using中提取对角线元素np.diagonal
  • 您会发现对角元素在哪些行中为负数,并将其存储在w.
  • 最后,您只选择由 指示的行w并将它们相加。

推荐阅读