Необходимо составить комбинации элементов из матрицы с условием их сопоставления с предыдущими элементами
Задача: есть матрица корреляции:
A B C ... AD1
A 1.000000 0.554783 0.807248 ... 0.411838
B 0.554783 1.000000 0.268990 ... 0.779533
C 0.807248 0.268990 1.000000 ... 0.074832
... ....
AD1 -0.050304 0.715818 -0.295941 ... 0.713958
её размер 400 элементов нужно найти комбинацию из 7 элементов в диапазоне от -0.5 до 0.5 между каждым элементов в комбинации к примеру я беру первую комбинацию A,B,C,D,E,F,G и если значение ['A']['B'] находится в диапазоне - то продолжить формировать комбинацию, если нет то перейти к следующему элементу ['A']['C'] и так до тех пор пока не будет получена комбинация из 7 элементов е примеру ['A']['D']['F']['D1']['AA1']['AB3']['AD1'] и далее перейти к следующему элементу в матрице ( то есть к B) и так же рассчитать для нее комбинации с теми же условиями
Вот код обычной функции itertools.combinations
def combinations(iterable, r):
# combinations('ABCD', 2) --> AB AC AD BC BD CD
# combinations(range(4), 3) --> 012 013 023 123
pool = tuple(iterable)
n = len(pool)
if r > n:
return
indices = range(r)
yield tuple(pool[i] for i in indices)
while True:
for i in reversed(range(r)):
if indices[i] != i + n - r:
break
else:
return
indices[i] += 1
for j in range(i+1, r):
indices[j] = indices[j-1] + 1
yield tuple(pool[i] for i in indices)