python - 创建一个循环的最佳方法,将矩阵乘以它的每个元素,然后对结果求和
问题描述
对 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 而没有内存错误。提前致谢。
解决方案
如果你想要的只是总和,你不需要在这里循环并建立一个新列表......你在数学上所做的归结为:
total = A.sum() ** 2
推荐阅读
- android - 以编程方式获取通话期间的通话时间?
- python - python代码上的无效参数错误
- java - 在 StackPane 中的 AreaChart 上覆盖节点
- node.js - nodejs - 如何在 mongo 的最后一些文档中搜索
- homebrew - 尝试 brew install watchman 时地窖中未链接的小桶
- azure-data-factory - Azure 数据工厂:从 Salesforce 到 REST API
- javascript - 用 Jest 和 Enzyme 反应组件的测试状态
- typescript - 当别名用于特定文件时,如何将打字稿别名路径转换为 Jest“moduleNameMapper”?
- angular - 打字稿界面中的这种语法是什么意思?
- bigcommerce - 我正在尝试捆绑项目但无法获得成功的结果