Я испытываю трудности при расчете различных типов комбинаций.
Давайте объясним на примере, у меня есть этот массив, или это может быть фрейм данных, и я хочу, чтобы из него были разные комбинации некоторых столбцов.
Поскольку я затем умножу эту матрицу на комбинацию для суммирования чисел.
test = np.array ([[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33],
[10,11,12,21,22,31,32,33]])
Возможные комбинации для первых трех столбцов: [1,0,0], [0,1,0], [0,0,1], поэтому мне нужно 10 или 11 или 12 следующих столбцов, 21 или 22, следовательно, комбинации [1,0], [0,1] И последние три столбца, 31,3 2,33, тогда это будет [1,0,0], [0,1,0], [0,0,1]
Итак, я получаю возможную комбинацию, используя эту функцию, которую я нашел в другойвопрос.
n=3
for i in range(2**n):
s = bin(i)[2:]
s = "0" * (n-len(s)) + s
print (list(s))
Что дает мне:
['0', '0', '0']
['0', '0', '1']
['0', '1', '0']
['0', '1', '1']
['1', '0', '0']
['1', '0', '1']
['1', '1', '0']
['1', '1', '1']
Все возможные комбинации, включая нули.Хотя мне удалось удалить их.
Он рассчитывает больше, чем нужные мне комбинации, и я обнаружил, что удаляю слишком много комбинаций, которые мне не нужны.
Когда мне нужны только эти случаи:
[1,0,0, 1,0, 1,0,0]
[0,1,0, 1,0, 1,0,0]
[0,0,1, 1,0, 1,0,0]
[1,0,0, 0,1, 1,0,0]
[0,1,0, 0,1, 1,0,0]
[0,0,1, 0,0, 1,0,0]
etc....
Мне нужно удалить много строк, которые не имеют отношения к 8 случаям, и удалить строки, где я нахожу более трех 1, и выбрать, где 1 расположены правильно и т. Д. ... неэффективно вообще,Я немного растерялся.