【发布时间】:2021-09-06 17:36:56
【问题描述】:
我尝试过在线搜索,但没有发现任何有用的东西
我目前正在尝试遍历多个嵌套循环以查找值:
for i in range(10):
val = 0
for j in range(10):
for k in range(10):
for l in range(10):
for m in range(10):
for n in range(10):
if i != j:
val += x[k, l, m, n] * r[k, i] * r[l, i] * r[m, j] * r[n, j]
values.append(val)
其中x 是(10, 10, 10, 10) 数组,r 是(10, 10) 数组。
我觉得应该有一个比遍历它们更快的解决方案。
如何加快这些嵌套循环的速度?
编辑:
我正在寻找一种方法来加快嵌套循环或重写脚本以提高速度。
【问题讨论】:
-
如果你唯一的条件是
if i != j:,你不应该在for j循环中做if i == j: continue吗? -
这似乎是应该用
einsum表达的东西,但我真的不知道如何实际使用该功能,哈哈。 numpy.org/doc/stable/reference/generated/numpy.einsum.html 这到底是在计算什么?使用itertools.product可以直观地简化代码的一种简单方法,但这不会对性能产生很大影响。 -
如果您能解释一下您的代码的作用,将会很有帮助。可以概括为矩阵运算吗?
-
@AKX 这是真的。好点
-
@user16573587 如果您不接受其中一些可能是通用操作的想法,并且它必须是一个 6 层嵌套循环,那么明确的答案是“你注定要失败”。我猜你可以尝试用
numba编译它,但我真的建议你先重新考虑这个方法
标签: python performance numpy