我正在研究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
错误
答案 0 :(得分:0)
随着矩阵维数的增加,效率将下降,处理此问题的有效方法是并行执行求和值的任务,这是可能的,因为加法遵循关联属性。
幸运的是,此并行化已在称为numpy的库中实现。
要开始使用numpy,请使用pip install numpy
要获得库的概述,请访问:https://www.geeksforgeeks.org/numpy-in-python-set-1-introduction/
对于您的问题,您将需要使用函数numpy.sum()
编辑:
正如@Mad Physicist指出的那样,Numpy还具有紧凑的内存布局,并且例程使用C语言实现,从而进一步提高了速度。