首页 > 解决方案 > 创建一个循环的最佳方法,将矩阵乘以它的每个元素,然后对结果求和

问题描述

对 Python 来说非常陌生,因此为缺乏词汇/知识而道歉。我想知道是否有更好的方法来实现下面的代码提供的功能。使用我制作的循环,我可以生成并附加由矩阵 A 乘以 A 中的每个元素形成的所有矩阵/数组。最后一行代码然后将这个数组数组中的所有元素相加并打印出来我想要的结果。

问题是,当我达到大约 d = 600 时,由于计算机内存不足,我收到 SIGKILL 错误。

我已经考虑过它背后的数学原理,其中包括将总和分解为处理不同索引值的部分,但似乎没有什么能显着加快速度。

这可能纯粹是一个基于内存的问题,但我想我会问是否有任何基于 Python/代码的提示可以提供帮助。代码如下:

A = numpy.random.randint(0, 4, size=(d, d))

All = []
for n in range(0, d):
    for m in range(0, d):
        All.append(A*(A[n,m]))

print(numpy.sum(All))

所以总的来说,我得到了正确的结果,但是由于矩阵的大小和乘法的数量,我无法达到我正在寻找的所需的 d = 2000 而没有内存错误。提前致谢。

标签: pythonperformancecoding-efficiency

解决方案


如果你想要的只是总和,你不需要在这里循环并建立一个新列表......你在数学上所做的归结为:

total = A.sum() ** 2

推荐阅读