Необходимо составить комбинации элементов из матрицы с условием их сопоставления с предыдущими элементами

Задача: есть матрица корреляции:

              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)

Ответы (0 шт):