У меня есть функция, которая сейчас занимает от 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 диапазонов
Как создать каждую комбинацию данного шаблона в массиве numpy?