【发布时间】:2023-03-20 10:46:02
【问题描述】:
我的功能现在需要 15 分钟到 20 分钟才能运行。我在算法中多次使用它,目前是算法。因耗时而无法使用。有没有可以优化以下功能:
def find_all():
for x in range(4, 10):
for y in range(4, 10):
for z in range(4, 10):
for z1 in range(4, 10):
for z2 in range(4, 10):
for xs in range(13 - x):
for ys in range(13 - y):
for zs in range(13 - z):
for z1s in range(13 - z1):
for z2s in range(13 - z2):
a = np.zeros(12, int)
a[xs:xs+x] += 1
a[ys:ys+y] += 1
a[zs:zs+z] += 1
a[z1s:z1s+z] += 1
a[z2s:z2s+z] += 1
if 0 not in a:
yield x, y, z,z1,z2s,xs, ys,zs,z1s,z2s,a
%time list(find_all())
基本上我在这里要做的是建立一个没有零的列表。我确实尝试了以下解决方案,但它仅适用于两个范围,我有一个要求,我可能需要多达 6 个范围 How to generate every combination of a given pattern in numpy array?
【问题讨论】:
-
您能解释一下它在做什么吗?您打算创建什么模式?
-
您正在执行类似 1 亿次迭代的操作(我不确定如何计算确切的迭代次数,因为内部循环中的外部变量值具有依赖性)。如果你真的需要这么多操作,那将需要很长时间。
-
不要显得粗鲁,但这可能会在 Stack Exchange 的“代码审查”站点上得到更快的回答,该站点主要用于优化您在此处的工作代码。 Stack Overflow 更多的是帮助修复非工作代码。
标签: python numpy for-loop optimization