Последовательный перебор последовательных масок
Есть двумерный массив из целых чисел.У каждой строки есть цифровая метка/характеристика.
Например, (кусок)

№ строки метка 1 2 3 4 5
1 0,00093459 0 0 0 0 0
2 0,001706309 -1 -1 1 0 0
3 -0,000440785 1 0 1 1 0
4 0,00490243 1 1 1 0 0
5 -0,008171593 -1 0 -1 -1 1
6 0,0011686 -1 -1 1 0 -1
7 0,00719967 1 0 1 1 0
8 -0,004407099 -1 0 -1 -1 1
9 0,001286239 -1 -1 -1 0 0
10 -0,000536647 -1 -1 -1 0 0
11 -0,000307875 -1 -1 1 0 -1
12 -0,003430157 -1 -1 -1 0 1
13 0,001801731 1 0 1 1 -1
14 0,003960876 -1 0 -1 -1 1
(прошу прощения, не нашел как вставить таблицу)
Надо реализовать перебор массива с целью поиска комбинаций значений столбцов при которых строки, удовлетворяющие значению столбцов удовлетворяли бы значению условия к меткам. Например, надо найти такие столбцы и такое их значение, при которых количество положительных меток (первый столбец) было больше чем отрицательных. Ответ: Столбец 3 должен быть = 1, Столбец 4 должен быть = 0. ТОгда у нас в фильтре останется 4 строки (2, 4, 6 и 12), из них 3шт - с положительными метками и только одна с отрицательными.
Первой идеей было сделать вложенные циклы, но при количестве строк более 20000 уже четвертый вложенный цикл выполнялся часами. Видится решением использование векторных вычислений с помощью NUMBA, но я пока не понимаю как решить задачу в векторах. Может сделать отдельный массив индексов, в котором каждый столбец и его каждое значение указывают номер строки в которой они встречаются и потом искать пересечение индексов? Тогда возникает задача последовательно перебора бинарной маски. Т.е. если у нас, например, Х столбцов, при этом значения в них варьируются от -1 до 1, то количество массивов с индексами = Х * 3. И надо организовать перебор маски двоичной по этим столбцам: 2 ** (Х*3). Т.е. формируется двоичная маска и по ней фильтруются столбцы с индексами. Как сделать двоичную маску, желательно, векторизованно? Т.к. для Х = 50 это уже дикие по времени циклы. А Х может быть и 100.. и 200...
Может я не в том направлении иду, и есть какой-то иной алгоритм?