矩阵求和逻辑

时间:2019-01-25 05:56:36

标签: python-3.x

我正在研究2D矩阵并查找元素总和,以下是我的逻辑:

def calculateSum(a, x, y):
    s = 0;
    for i in range(0,x+1):
       for j in range(0,y+1):
           s = s + a[i][j];
    print(s)
    return s

def check(a):
    arr = []

    x = 0
    y = 0
    for i in range(len(a)):
        row = []
        y = 0
        for j in range(len(a[i])):
            row.append(calculateSum(a, x, y))
            y = y + 1
        x = x + 1
        print(row)

check([[1, 2], [3, 4]])

calculateSum是用于计算元素总和的函数。

现在我的问题是,如果矩阵大小很大,是否有办法提高上述程序的性能?

更新

import numpy as np
def calculateSum(a, x, y):
   return np.sum(a[x:,y:])

使用numpy后,如果我使用numpy,我将得到TypeError: list indices must be integers or slices, not tuple错误

1 个答案:

答案 0 :(得分:0)

随着矩阵维数的增加,效率将下降,处理此问题的有效方法是并行执行求和值的任务,这是可能的,因为加法遵循关联属性。

幸运的是,此并行化已在称为numpy的库中实现。  要开始使用numpy,请使用pip install numpy要获得库的概述,请访问:https://www.geeksforgeeks.org/numpy-in-python-set-1-introduction/

对于您的问题,您将需要使用函数numpy.sum()

编辑:

正如@Mad Physicist指出的那样,Numpy还具有紧凑的内存布局,并且例程使用C语言实现,从而进一步提高了速度。