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

Best way to create a loop for multiplying a matrix by every one of its elements, then summing the results

对 Python 非常陌生,因此对于 vocabulary/knowledge 的缺失深表歉意。我想知道是否有更好的方法来实现下面的代码提供的功能。使用我所做的循环,我可以生成并追加矩阵 A 乘以 A 中的每个元素形成的所有 matrices/arrays。代码的最后一行然后对这个数组中的所有元素求和,打印出我想要的结果。

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

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

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

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。提前致谢。

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

total = A.sum() ** 2