Python - самый эффективный способ найти уникальные перестановки чисел (pandas, numpy, itertools...) ⇐ Python
Python - самый эффективный способ найти уникальные перестановки чисел (pandas, numpy, itertools...)
Я ищу сборку движка в python/pandas/numpy/itertools, которая поможет мне эффективно решить мою проблему с перестановками.
У меня есть «большой» DataFrame чисел, и я пытаюсь построить все возможные уникальные комбинации n-элементов + счетчик вхождений этого элемента.
Пример:
[*]Этот пример имеет ограниченный размер Dataframe — реальный размер намного больше, и это вызывает экспоненциальную зависимость от времени.
импортировать панд из комбинаций импорта itertools Начальный_шаблон = 1 Стоп_Шаблон = 3 test_input = [ [6, 7, 14, 16, 17, 20, 31, 33, 35, 36, 40, 41, 48, 50, 55, 58, 60, 73, 76, 80], [1, 4, 7, 12, 14, 18, 25, 30, 36, 45, 50, 51, 54, 56, 57, 59, 61, 65, 68, 72], [7, 13, 19, 33, 35, 40, 46, 54, 57, 62, 64, 67, 68, 71, 72, 73, 74, 76, 79, 80], [9, 16, 20, 21, 24, 29, 34, 36, 39, 40, 44, 49, 52, 59, 60, 62, 70, 71, 76, 80], [1, 4, 5, 13, 15, 19, 23, 25, 33, 37, 39, 41, 45, 52, 60, 63, 64, 66, 67, 70], [5, 6, 10, 19, 22, 23, 24, 27, 28, 35, 41, 44, 57, 58, 61, 68, 70, 71, 77, 79], [1, 3, 6, 10, 17, 19, 28, 29, 38, 39, 45, 49, 50, 57, 58, 63, 69, 73, 78, 80], [2, 5, 6, 9, 15, 16, 19, 28, 36, 38, 40, 48, 56, 59, 61, 63, 68, 69, 73, 77], [1, 5, 8, 12, 17, 19, 26, 28, 32, 33, 35, 38, 57, 59, 61, 64, 75, 77, 79, 80], [2, 8, 9, 12, 16, 28, 33, 36, 37, 41, 46, 54, 55, 57, 58, 62, 64, 66, 77, 79], [2, 3, 10, 12, 20, 25, 28, 35, 37, 38, 39, 43, 44, 45, 46, 48, 53, 61, 65, 79], [7, 13, 17, 18, 19, 30, 32, 33, 34, 35, 36, 40, 45, 49, 63, 66, 68, 72, 79, 80], [7, 10, 14, 18, 21, 25, 26, 29, 31, 32, 42, 43, 46, 47, 57, 58, 65, 71, 74, 79], [1, 3, 7, 14, 23, 35, 39, 45, 48, 50, 51, 57, 59, 61, 62, 64, 65, 70, 75, 79], [1, 5, 7, 16, 18, 22, 27, 32, 40, 48, 50, 55, 59, 60, 64, 70, 72, 76, 78, 79], [1, 4, 8, 10, 12, 18, 21, 35, 38, 39, 41, 44, 47, 54, 60, 62, 65, 66, 78, 79], [2, 3, 5, 9, 10, 17, 19, 21, 23, 29, 32, 48, 49, 52, 60, 61, 66, 71, 76, 79], [6, 7, 11, 13, 19, 20, 21, 33, 36, 39, 41, 44, 45, 57, 60, 63, 65, 69, 70, 76], [2, 8, 15, 17, 22, 25, 26, 27, 29, 32, 42, 45, 52, 55, 62, 63, 65, 73, 74, 75], [1, 4, 6, 7, 8, 20, 24, 27, 28, 31, 34, 43, 46, 50, 56, 58, 59, 61, 68, 80], [3, 4, 9, 13, 14, 17, 19, 20, 28, 31, 32, 33, 36, 41, 53, 64, 67, 77, 78, 79], [7, 8, 11, 13, 20, 22, 23, 24, 31, 41, 42, 47, 55, 61, 62, 64, 67, 77, 78, 79], [2, 12, 15, 20, 30, 36, 40, 44, 47, 55, 58, 59, 60, 65, 69, 70, 71, 73, 75, 76], [1, 3, 5, 7, 8, 10, 18, 20, 21, 31, 40, 43, 49, 53, 60, 61, 63, 64, 68, 75], [16, 19, 21, 22, 24, 27, 28, 31, 32, 33, 35, 38, 41, 46, 53, 56, 58, 63, 66, 71], [1, 2, 4, 6, 13, 16, 18, 40, 44, 45, 49, 50, 53, 55, 56, 63, 68, 70, 73, 80], [3, 5, 12, 13, 20, 22, 23, 27, 28, 35, 36, 39, 42, 45, 53, 60, 62, 64, 69, 71], [3, 26, 27, 29, 32, 33, 35, 36, 39, 40, 43, 51, 57, 58, 59, 62, 67, 73, 78, 80], [8, 9, 10, 12, 18, 20, 21, 32, 34, 35, 41, 49, 53, 56, 57, 61, 62, 64, 76, 78], [4, 5, 9, 15, 17, 24, 36, 38, 43, 44, 50, 51, 53, 57, 59, 63, 66, 68, 72, 80], [3, 5, 8, 10, 13, 15, 16, 20, 23, 27, 28, 31, 36, 39, 55, 56, 57, 58, 68, 79], [5, 7, 8, 15, 16, 18, 23, 26, 30, 32, 37, 40, 47, 48, 52, 56, 65, 67, 72, 73], [3, 7, 12, 17, 30, 31, 39, 41, 43, 44, 54, 58, 59, 61, 66, 69, 74, 75, 77, 78], [2, 3, 7, 8, 16, 18, 21, 22, 25, 27, 28, 32, 33, 42, 45, 48, 51, 60, 66, 73], [8, 10, 11, 16, 21, 22, 24, 25, 31, 39, 41, 50, 51, 65, 67, 69, 70, 74, 76, 78], [5, 8, 14, 20, 22, 28, 33, 38, 45, 46, 50, 56, 57, 64, 69, 72, 73, 75, 77, 78], [7, 8, 9, 17, 20, 21, 23, 24, 25, 27, 29, 31, 34, 43, 49, 54, 63, 65, 71, 79], [13, 16, 18, 19, 20, 21, 22, 27, 39, 45, 51, 55, 59, 63, 65, 67, 70, 73, 78, 79], [3, 5, 7, 9, 13, 24, 27, 28, 36, 43, 44, 46, 48, 58, 61, 63, 66, 67, 71, 75], [9, 12, 14, 16, 19, 21, 34, 36, 41, 43, 45, 47, 52, 61, 64, 65, 69, 70, 71, 72], [6, 7, 11, 16, 18, 24, 35, 42, 47, 51, 55, 57, 59, 68, 69, 70, 71, 72, 74, 79], [3, 12, 18, 22, 27, 28, 38, 46, 47, 49, 54, 57, 64, 65, 68, 69, 76, 77, 78, 79], [2, 9, 12, 13, 22, 23, 29, 33, 34, 35, 36, 41, 44, 53, 56, 64, 65, 71, 72, 79], [1, 6, 14, 17, 21, 23, 25, 28, 30, 35, 37, 38, 39, 46, 47, 49, 52, 64, 68, 76], [8, 13, 16, 23, 31, 32, 40, 42, 44, 46, 57, 63, 64, 65, 66, 70, 71, 72, 74, 79], [1, 6, 8, 9, 15, 17, 18, 22, 24, 25, 27, 30, 42, 43, 46, 51, 52, 56, 59, 80], [1, 2, 6, 14, 16, 20, 22, 27, 30, 33, 38, 40, 45, 47, 54, 63, 64, 76, 79, 80], [1, 4, 8, 21, 29, 34, 35, 38, 43, 45, 47, 49, 52, 57, 60, 62, 63, 74, 75, 80], [1, 6, 9, 10, 18, 19, 23, 27, 33, 34, 37, 39, 42, 57, 63, 64, 67, 68, 69, 71], [3, 11, 15, 18, 25, 31, 34, 35, 40, 49, 50, 52, 54, 55, 57, 61, 69, 73, 79, 80], [4, 7, 10, 13, 19, 21, 22, 26, 36, 37, 38, 55, 57, 59, 64, 65, 69, 70, 71, 76], [1, 4, 9, 21, 26, 27, 33, 34, 35, 37, 45, 49, 56, 59, 62, 63, 65, 68, 73, 76], [3, 4, 15, 19, 20, 23, 26, 27, 29, 30, 33, 36, 44, 54, 61, 62, 67, 68, 73, 74], [1, 3, 4, 8, 9, 10, 13, 15, 18, 28, 32, 38, 47, 49, 51, 56, 57, 73, 75, 77], [7, 17, 18, 20, 26, 33, 38, 40, 42, 46, 51, 52, 55, 57, 61, 66, 67, 68, 77, 78], [3, 14, 20, 21, 29, 31, 33, 34, 38, 40, 41, 43, 45, 47, 49, 61, 63, 64, 65, 78], [8, 12, 20, 21, 23, 28, 31, 32, 35, 40, 44, 53, 55, 59, 60, 63, 65, 67, 69, 76], [9, 14, 15, 17, 19, 24, 25, 29, 38, 39, 46, 47, 48, 51, 56, 61, 64, 66, 69, 76], [5, 6, 10, 12, 17, 21, 30, 31, 40, 41, 43, 54, 57, 58, 62, 64, 65, 70, 75, 79], [2, 4, 12, 19, 35, 36, 38, 39, 45, 49, 51, 53, 54, 59, 60, 66, 72, 74, 75, 77], [2, 3, 4, 6, 8, 11, 14, 20, 23, 25, 33, 35, 40, 44, 46, 53, 59, 67, 77, 78], [3, 4, 5, 6, 8, 12, 16, 18, 19, 25, 30, 31, 41, 51, 52, 56, 57, 63, 64, 74], [5, 9, 14, 15, 16, 18, 19, 31, 35, 37, 38, 43, 45, 47, 56, 61, 64, 71, 75, 77], [7, 8, 9, 10, 14, 21, 22, 31, 35, 38, 47, 48, 51, 61, 62, 64, 68, 73, 75, 80], [14, 15, 17, 22, 23, 32, 36, 38, 42, 48, 49, 51, 56, 58, 63, 67, 68, 72, 73, 79], [2, 7, 8, 14, 15, 22, 23, 25, 32, 34, 36, 40, 49, 56, 57, 59, 62, 69, 76, 77], [5, 9, 11, 12, 15, 17, 25, 26, 29, 30, 31, 32, 38, 43, 56, 58, 62, 68, 71, 80], [4, 6, 10, 15, 18, 23, 26, 32, 42, 44, 47, 59, 63, 67, 69, 76, 77, 78, 79, 80], [2, 3, 9, 17, 20, 25, 28, 33, 34, 35, 36, 37, 49, 54, 55, 57, 60, 64, 65, 73], [6, 7, 12, 16, 17, 19, 22, 24, 27, 34, 39, 40, 41, 42, 49, 55, 64, 70, 73, 80], [2, 14, 16, 18, 28, 35, 39, 41, 45, 48, 50, 58, 64, 65, 69, 73, 75, 76, 77, 79], [8, 12, 16, 21, 23, 24, 28, 29, 31, 35, 36, 43, 45, 49, 53, 56, 57, 71, 72, 74], [2, 7, 8, 11, 15, 16, 17, 21, 23, 25, 34, 37, 42, 43, 46, 50, 53, 58, 78, 80], [1, 3, 5, 7, 13, 20, 27, 28, 30, 35, 38, 42, 45, 55, 62, 64, 65, 72, 73, 79], [6, 12, 15, 19, 32, 34, 35, 36, 44, 48, 54, 55, 63, 71, 73, 74, 75, 76, 77, 78], [6, 8, 11, 15, 16, 18, 21, 23, 28, 29, 35, 48, 53, 58, 63, 67, 71, 73, 75, 80], [3, 6, 7, 19, 21, 22, 29, 31, 44, 46, 51, 53, 56, 59, 61, 62, 68, 72, 78, 79], [4, 6, 7, 8, 22, 24, 28, 29, 32, 35, 37, 38, 44, 59, 61, 64, 69, 70, 73, 78], [5, 8, 13, 22, 23, 25, 26, 28, 30, 35, 41, 47, 50, 55, 62, 64, 66, 67, 69, 70], [5, 7, 11, 12, 19, 20, 35, 50, 51, 55, 57, 61, 64, 65, 67, 71, 74, 76, 78, 79], [5, 6, 9, 10, 17, 20, 24, 25, 26, 27, 28, 32, 38, 47, 54, 58, 60, 63, 71, 73], [1, 9, 10, 26, 35, 38, 42, 45, 51, 53, 62, 64, 66, 67, 68, 70, 71, 73, 75, 76], [7, 9, 10, 19, 20, 23, 34, 38, 44, 48, 56, 59, 61, 63, 67, 70, 71, 73, 79, 80], [6, 8, 11, 14, 24, 27, 30, 32, 33, 34, 42, 43, 45, 58, 61, 62, 69, 72, 75, 77], [8, 10, 11, 14, 22, 23, 24, 31, 38, 39, 40, 44, 52, 57, 61, 63, 67, 70, 77, 80], [1, 7, 8, 13, 15, 25, 29, 34, 37, 38, 42, 47, 48, 55, 59, 61, 64, 70, 74, 80], [6, 8, 10, 15, 22, 26, 31, 44, 45, 47, 49, 56, 57, 59, 65, 67, 68, 73, 75, 76], [12, 13, 14, 15, 25, 33, 40, 41, 43, 44, 46, 47, 52, 54, 57, 62, 63, 76, 79, 80], [3, 7, 11, 14, 15, 19, 26, 34, 39, 40, 46, 47, 48, 50, 53, 66, 67, 74, 78, 79], [6, 12, 13, 16, 19, 30, 36, 45, 46, 47, 48, 57, 59, 61, 62, 63, 64, 65, 67, 76], [1, 4, 5, 9, 20, 22, 26, 34, 36, 38, 40, 44, 48, 51, 55, 57, 61, 64, 69, 76], [4, 11, 12, 16, 21, 28, 32, 33, 35, 36, 37, 46, 52, 65, 67, 68, 69, 73, 74, 78], [3, 6, 8, 9, 10, 11, 14, 17, 21, 31, 34, 41, 45, 53, 62, 63, 70, 73, 74, 75], [2, 4, 12, 16, 17, 28, 29, 30, 31, 34, 36, 39, 40, 44, 45, 61, 68, 70, 71, 78], [1, 14, 21, 25, 26, 31, 37, 39, 40, 42, 52, 53, 56, 62, 63, 64, 66, 69, 77, 78], [4, 6, 11, 12, 22, 23, 37, 39, 40, 44, 46, 48, 51, 57, 58, 64, 68, 69, 74, 80], [2, 3, 5, 11, 19, 21, 30, 33, 34, 36, 37, 41, 43, 50, 59, 62, 73, 74, 76, 78], [2, 4, 20, 21, 24, 33, 36, 44, 50, 53, 54, 57, 60, 61, 65, 66, 67, 68, 74, 79], [7, 10, 19, 20, 27, 28, 30, 38, 42, 45, 46, 47, 54, 61, 64, 71, 75, 78, 79, 80], [1, 6, 9, 13, 14, 15, 17, 20, 21, 24, 27, 28, 35, 45, 52, 53, 55, 66, 69, 74], [1, 2, 8, 14, 16, 24, 25, 26, 30, 40, 43, 48, 51, 55, 60, 64, 66, 67, 69, 80], [2, 3, 12, 13, 14, 16, 19, 23, 26, 27, 41, 43, 46, 53, 55, 59, 65, 71, 72, 77], [4, 15, 17, 23, 27, 29, 30, 40, 44, 48, 50, 56, 59, 60, 61, 63, 66, 70, 71, 75], [6, 7, 9, 11, 18, 22, 26, 27, 32, 43, 48, 56, 59, 60, 61, 62, 71, 74, 78, 79], [2, 10, 14, 21, 30, 33, 42, 43, 45, 46, 48, 51, 55, 57, 64, 65, 73, 74, 78, 79], [11, 12, 15, 20, 23, 24, 32, 33, 34, 36, 49, 50, 53, 56, 59, 67, 68, 69, 70, 79], [19, 20, 22, 23, 24, 30, 31, 33, 41, 44, 45, 49, 55, 56, 58, 60, 67, 70, 76, 78], [5, 11, 14, 21, 23, 25, 29, 34, 37, 44, 48, 56, 59, 62, 64, 66, 67, 71, 74, 77], [2, 5, 11, 17, 19, 22, 24, 28, 31, 32, 34, 38, 44, 51, 55, 57, 60, 65, 66, 73], [1, 2, 3, 6, 7, 10, 17, 18, 19, 20, 24, 26, 32, 35, 40, 52, 57, 68, 69, 76], [4, 8, 13, 17, 29, 30, 31, 36, 41, 42, 43, 44, 49, 57, 60, 65, 67, 68, 69, 71], [2, 6, 9, 10, 13, 21, 24, 28, 32, 35, 37, 38, 42, 55, 57, 59, 61, 71, 76, 77], [5, 7, 11, 15, 31, 32, 33, 35, 40, 41, 48, 49, 51, 56, 67, 69, 76, 77, 78, 80], [6, 7, 14, 15, 18, 24, 26, 29, 44, 55, 56, 61, 63, 64, 66, 68, 70, 72, 73, 80], [3, 5, 11, 14, 19, 24, 25, 52, 53, 54, 62, 64, 66, 67, 73, 74, 75, 76, 77, 79], [4, 14, 19, 21, 22, 24, 26, 31, 32, 37, 40, 42, 47, 51, 56, 59, 66, 69, 73, 76], [5, 12, 17, 22, 28, 30, 37, 40, 52, 53, 56, 59, 61, 65, 68, 69, 73, 77, 78, 80], [5, 19, 20, 31, 34, 45, 49, 52, 54, 56, 57, 61, 65, 68, 73, 75, 76, 78, 79, 80], [4, 8, 9, 16, 20, 24, 28, 29, 34, 39, 41, 43, 49, 54, 55, 59, 60, 65, 72, 75], [3, 6, 8, 12, 14, 17, 23, 24, 26, 35, 39, 43, 47, 52, 53, 54, 57, 61, 62, 65], [6, 14, 15, 18, 19, 25, 26, 28, 30, 32, 37, 38, 39, 47, 52, 54, 62, 66, 70, 76], [7, 9, 10, 12, 18, 20, 25, 30, 32, 41, 44, 45, 48, 56, 61, 64, 67, 71, 74, 77], [1, 8, 9, 17, 19, 22, 33, 38, 39, 40, 42, 43, 45, 47, 50, 55, 56, 68, 76, 78], [8, 11, 16, 19, 22, 23, 25, 27, 35, 42, 43, 47, 48, 50, 51, 63, 65, 67, 73, 77], [6, 7, 10, 11, 13, 17, 24, 29, 33, 36, 41, 47, 50, 52, 58, 60, 62, 70, 71, 79], [4, 8, 13, 17, 19, 20, 22, 29, 30, 32, 38, 42, 46, 49, 53, 61, 62, 69, 71, 75], [4, 9, 10, 11, 20, 21, 23, 33, 40, 48, 53, 61, 64, 67, 69, 71, 73, 74, 78, 80], [2, 7, 10, 14, 17, 28, 30, 36, 42, 48, 52, 53, 54, 55, 59, 63, 65, 69, 74, 76], [9, 12, 13, 16, 22, 23, 28, 30, 31, 35, 44, 45, 47, 49, 51, 55, 60, 61, 62, 79], [4, 11, 19, 21, 23, 24, 34, 36, 39, 42, 47, 51, 52, 55, 63, 64, 69, 73, 76, 79], [8, 9, 10, 17, 19, 22, 33, 34, 35, 38, 39, 40, 43, 47, 53, 58, 60, 65, 68, 77], [1, 5, 9, 10, 11, 12, 17, 18, 23, 27, 28, 32, 41, 45, 57, 59, 64, 67, 73, 80], [5, 10, 14, 16, 31, 32, 34, 35, 36, 41, 43, 45, 46, 48, 58, 66, 70, 71, 78, 79], [6, 12, 17, 23, 24, 25, 27, 30, 34, 46, 48, 49, 51, 54, 56, 62, 63, 67, 71, 79], [4, 10, 11, 13, 14, 15, 24, 25, 26, 31, 39, 44, 47, 49, 51, 57, 63, 66, 76, 78], [1, 9, 10, 11, 14, 20, 21, 23, 30, 36, 37, 38, 40, 43, 45, 52, 53, 67, 75, 76], [5, 7, 9, 12, 17, 18, 24, 26, 27, 30, 31, 33, 43, 45, 48, 49, 55, 61, 68, 69], [2, 7, 13, 22, 33, 36, 37, 39, 41, 45, 51, 53, 54, 59, 64, 66, 72, 74, 76, 77], [2, 7, 9, 10, 19, 21, 22, 24, 35, 46, 51, 53, 54, 55, 59, 60, 62, 65, 74, 80], [4, 7, 9, 11, 16, 20, 22, 27, 33, 45, 47, 51, 52, 55, 66, 70, 71, 73, 77, 79], [4, 8, 10, 12, 24, 28, 29, 30, 35, 37, 41, 50, 51, 56, 59, 63, 67, 68, 69, 76], [3, 11, 20, 24, 27, 28, 34, 36, 41, 49, 50, 56, 59, 65, 66, 67, 70, 72, 76, 79], [6, 14, 17, 20, 25, 30, 34, 35, 36, 41, 46, 47, 51, 53, 58, 61, 62, 69, 73, 77], [1, 2, 4, 7, 10, 11, 14, 15, 26, 38, 40, 48, 49, 57, 58, 62, 69, 70, 77, 78], [1, 10, 14, 15, 19, 20, 21, 24, 26, 29, 31, 36, 40, 44, 53, 60, 64, 77, 78, 80], [1, 2, 4, 8, 21, 24, 25, 30, 39, 40, 43, 48, 52, 54, 62, 63, 64, 67, 68, 76], [3, 4, 8, 11, 12, 14, 20, 21, 26, 27, 30, 42, 50, 51, 58, 61, 64, 66, 70, 79], [2, 4, 5, 6, 12, 17, 20, 24, 30, 32, 36, 43, 45, 49, 54, 59, 63, 68, 75, 77], [5, 10, 11, 17, 18, 21, 27, 28, 33, 35, 36, 42, 44, 45, 49, 57, 62, 63, 74, 78], [3, 9, 12, 13, 18, 28, 29, 30, 31, 36, 38, 47, 50, 54, 59, 60, 73, 75, 76, 79], [5, 9, 12, 15, 28, 32, 35, 37, 38, 40, 41, 43, 45, 58, 60, 63, 64, 67, 74, 77], [2, 5, 7, 17, 20, 22, 23, 24, 30, 31, 40, 44, 56, 57, 58, 61, 62, 66, 70, 72], [3, 13, 19, 21, 22, 23, 34, 35, 37, 38, 39, 41, 43, 45, 50, 55, 66, 73, 77, 80], [6, 9, 10, 15, 21, 24, 28, 32, 34, 43, 49, 51, 53, 66, 68, 69, 72, 74, 77, 78], [6, 7, 11, 17, 22, 24, 26, 27, 29, 30, 47, 49, 50, 51, 53, 58, 65, 69, 74, 79], [3, 7, 11, 15, 17, 22, 23, 25, 34, 36, 40, 43, 46, 54, 55, 56, 59, 65, 67, 77], [2, 3, 4, 7, 9, 14, 17, 29, 32, 33, 40, 43, 46, 51, 53, 68, 69, 76, 79, 80], [4, 5, 9, 13, 18, 19, 24, 25, 26, 28, 32, 35, 43, 45, 53, 54, 58, 59, 64, 77], [4, 7, 9, 12, 18, 23, 24, 26, 38, 39, 46, 51, 54, 58, 63, 67, 68, 69, 70, 80], [1, 2, 12, 26, 31, 33, 35, 36, 45, 47, 48, 49, 56, 58, 60, 66, 69, 71, 74, 76], [6, 9, 10, 13, 15, 22, 24, 25, 27, 40, 42, 45, 51, 61, 63, 65, 68, 70, 72, 75], [4, 5, 7, 8, 11, 19, 22, 24, 25, 26, 27, 34, 40, 44, 45, 58, 60, 63, 64, 69], [12, 13, 14, 16, 25, 26, 31, 40, 45, 46, 48, 52, 53, 62, 64, 70, 72, 75, 77, 80], [2, 6, 10, 13, 20, 23, 24, 30, 32, 35, 46, 54, 62, 65, 68, 69, 70, 71, 75, 79], [1, 6, 9, 10, 12, 15, 17, 32, 37, 43, 48, 52, 57, 63, 64, 65, 72, 75, 76, 79], [5, 19, 20, 24, 28, 33, 34, 36, 40, 45, 47, 48, 49, 55, 58, 60, 68, 75, 77, 80], [4, 9, 11, 14, 19, 20, 22, 23, 30, 36, 46, 50, 51, 59, 63, 64, 70, 71, 77, 79], [1, 3, 4, 7, 16, 25, 29, 31, 38, 40, 41, 45, 46, 51, 58, 65, 71, 72, 78, 80], [3, 6, 11, 12, 23, 24, 34, 35, 36, 37, 40, 45, 48, 54, 55, 59, 63, 73, 76, 77], [13, 21, 25, 30, 39, 45, 47, 48, 51, 53, 55, 57, 58, 59, 60, 64, 71, 72, 73, 77], [4, 9, 10, 12, 15, 18, 29, 31, 33, 34, 35, 36, 40, 41, 49, 60, 61, 70, 73, 79], [1, 4, 12, 14, 22, 28, 29, 33, 34, 36, 48, 49, 50, 55, 58, 59, 60, 64, 71, 77], [9, 23, 24, 29, 30, 31, 32, 37, 38, 45, 54, 55, 57, 61, 62, 65, 68, 69, 71, 74], [8, 10, 14, 19, 22, 25, 26, 29, 30, 31, 32, 34, 42, 45, 46, 54, 65, 73, 78, 80], [1, 3, 5, 9, 17, 20, 22, 36, 39, 43, 49, 51, 54, 55, 63, 66, 67, 71, 74, 78], [2, 14, 16, 23, 24, 25, 31, 32, 34, 35, 42, 46, 48, 53, 55, 57, 71, 73, 75, 76], [3, 4, 7, 8, 19, 34, 37, 38, 40, 41, 42, 43, 45, 56, 58, 59, 61, 63, 65, 66], [4, 5, 9, 16, 19, 29, 30, 34, 35, 39, 44, 46, 47, 49, 50, 69, 72, 74, 75, 77], [1, 8, 20, 24, 26, 31, 32, 33, 39, 47, 54, 55, 60, 65, 68, 72, 74, 75, 77, 78], [4, 12, 13, 20, 24, 26, 27, 30, 39, 40, 46, 47, 50, 52, 53, 58, 66, 70, 71, 75], [2, 4, 9, 22, 24, 29, 30, 35, 39, 40, 43, 48, 49, 50, 51, 58, 60, 62, 75, 77], [2, 3, 10, 17, 19, 23, 34, 40, 41, 42, 47, 48, 49, 52, 59, 66, 70, 72, 75, 80], [5, 11, 12, 14, 15, 16, 22, 23, 26, 27, 30, 31, 47, 51, 53, 60, 63, 64, 67, 78], [1, 5, 8, 11, 21, 23, 26, 28, 30, 39, 47, 50, 57, 59, 61, 62, 71, 72, 74, 77], [6, 10, 13, 15, 18, 25, 26, 27, 28, 29, 33, 38, 41, 43, 47, 49, 52, 55, 61, 79], [5, 13, 19, 21, 29, 36, 37, 39, 44, 48, 50, 52, 56, 58, 67, 72, 73, 75, 76, 80], [3, 5, 8, 13, 15, 16, 20, 21, 29, 30, 31, 33, 35, 39, 40, 50, 51, 53, 61, 65], [3, 4, 7, 8, 9, 13, 15, 16, 18, 20, 22, 33, 38, 41, 44, 46, 51, 58, 60, 70], [13, 16, 18, 36, 37, 38, 39, 45, 48, 51, 52, 53, 57, 59, 65, 67, 68, 74, 78, 79], [2, 10, 18, 20, 24, 25, 27, 32, 40, 44, 47, 48, 49, 50, 51, 56, 71, 73, 74, 77], [2, 5, 10, 16, 23, 24, 25, 26, 34, 38, 39, 44, 46, 47, 52, 65, 67, 68, 71, 74], [5, 7, 13, 14, 18, 24, 26, 32, 42, 48, 51, 53, 54, 56, 65, 67, 70, 73, 77, 80], [2, 6, 13, 21, 26, 32, 34, 42, 43, 46, 47, 48, 50, 55, 58, 62, 70, 71, 73, 75], [4, 9, 15, 18, 20, 37, 42, 44, 49, 50, 53, 54, 59, 62, 64, 67, 71, 75, 77, 80], [3, 7, 9, 12, 16, 19, 22, 26, 27, 37, 39, 54, 55, 57, 59, 65, 70, 71, 73, 80], [6, 7, 8, 15, 16, 26, 31, 33, 36, 41, 43, 49, 50, 51, 54, 59, 63, 73, 74, 79], [3, 4, 5, 10, 15, 17, 31, 32, 35, 37, 38, 41, 63, 65, 67, 69, 71, 77, 79, 80], [1, 3, 4, 8, 16, 19, 20, 21, 23, 26, 27, 35, 43, 54, 57, 58, 60, 62, 68, 74], [1, 2, 5, 14, 15, 20, 21, 22, 23, 25, 28, 31, 35, 40, 58, 60, 68, 69, 72, 76], [2, 8, 10, 11, 15, 20, 22, 23, 24, 25, 26, 32, 40, 44, 46, 51, 53, 69, 70, 73], [6, 7, 10, 12, 18, 31, 35, 38, 46, 48, 55, 56, 58, 59, 60, 62, 66, 68, 74, 78], [6, 10, 11, 13, 19, 23, 27, 36, 39, 41, 42, 58, 62, 63, 65, 67, 68, 69, 71, 80], [3, 17, 18, 22, 23, 24, 28, 30, 38, 39, 44, 48, 54, 60, 62, 69, 73, 74, 75, 76], [5, 7, 8, 14, 19, 20, 24, 25, 27, 31, 32, 35, 39, 43, 53, 56, 64, 69, 73, 80], [1, 7, 15, 17, 22, 25, 32, 34, 36, 48, 49, 50, 51, 54, 60, 63, 70, 75, 76, 77], [1, 4, 13, 15, 16, 25, 26, 37, 38, 39, 40, 45, 48, 53, 54, 56, 57, 65, 66, 78], [1, 3, 6, 9, 23, 29, 35, 38, 41, 42, 45, 48, 49, 55, 56, 72, 74, 75, 79, 80], [2, 3, 9, 11, 14, 17, 21, 24, 29, 32, 36, 43, 49, 51, 55, 60, 61, 66, 75, 78], [6, 15, 17, 20, 24, 33, 34, 35, 44, 45, 48, 49, 53, 55, 64, 66, 70, 75, 76, 77], [1, 2, 5, 6, 7, 13, 20, 21, 22, 33, 37, 40, 48, 49, 51, 52, 56, 59, 73, 79], [1, 7, 15, 16, 17, 27, 30, 32, 34, 42, 43, 48, 50, 52, 56, 59, 61, 64, 70, 72], [10, 12, 14, 27, 31, 32, 33, 39, 41, 43, 55, 56, 57, 58, 59, 60, 71, 73, 74, 78], [1, 3, 5, 6, 8, 10, 13, 17, 21, 22, 24, 37, 46, 52, 57, 60, 61, 62, 65, 73], [2, 4, 5, 7, 13, 16, 18, 21, 32, 34, 35, 41, 46, 48, 57, 62, 63, 65, 70, 73], [1, 5, 7, 15, 22, 29, 30, 33, 36, 37, 38, 42, 43, 54, 56, 61, 66, 69, 70, 72], [2, 7, 10, 13, 18, 20, 26, 34, 37, 39, 42, 52, 53, 54, 57, 59, 62, 68, 74, 77], [4, 16, 20, 21, 22, 28, 29, 30, 32, 36, 39, 40, 41, 44, 46, 47, 49, 60, 63, 74], [4, 6, 7, 8, 13, 20, 24, 27, 28, 29, 39, 40, 42, 46, 47, 56, 57, 64, 67, 75], [8, 11, 15, 17, 18, 22, 26, 27, 28, 34, 37, 42, 43, 44, 45, 53, 54, 66, 74, 76], [1, 7, 12, 17, 31, 34, 36, 38, 46, 48, 54, 59, 62, 64, 70, 73, 74, 75, 76, 80], [5, 8, 18, 19, 20, 21, 25, 32, 38, 45, 47, 53, 58, 64, 67, 71, 74, 75, 77, 80], [11, 13, 14, 15, 20, 22, 26, 28, 29, 37, 40, 46, 51, 52, 55, 59, 70, 73, 78, 79], [5, 7, 10, 14, 16, 20, 21, 23, 24, 33, 40, 41, 42, 54, 58, 63, 67, 72, 78, 79], [7, 10, 17, 19, 20, 23, 26, 31, 32, 33, 37, 41, 42, 45, 47, 52, 53, 72, 73, 80], [1, 2, 3, 8, 10, 18, 21, 25, 27, 28, 35, 37, 43, 46, 50, 53, 57, 62, 63, 79], [4, 5, 6, 13, 16, 20, 21, 22, 25, 32, 35, 40, 44, 56, 57, 59, 61, 66, 69, 78], [9, 10, 12, 13, 18, 19, 22, 26, 31, 34, 35, 37, 51, 52, 56, 66, 73, 75, 76, 79], [5, 8, 15, 18, 27, 30, 33, 35, 40, 45, 51, 56, 65, 66, 67, 68, 71, 75, 76, 80], [1, 2, 3, 6, 12, 16, 17, 19, 33, 34, 38, 48, 51, 54, 55, 58, 61, 63, 67, 77], [1, 7, 18, 20, 23, 28, 29, 30, 37, 38, 44, 49, 51, 54, 62, 69, 70, 72, 75, 80], [3, 5, 8, 13, 15, 17, 20, 24, 25, 31, 34, 36, 40, 44, 53, 60, 62, 66, 70, 72], [7, 8, 13, 19, 22, 23, 26, 31, 35, 40, 50, 52, 53, 58, 61, 63, 65, 75, 76, 80], [1, 2, 6, 14, 16, 17, 19, 21, 33, 36, 39, 41, 44, 45, 48, 51, 64, 72, 75, 76], [3, 9, 17, 19, 20, 23, 25, 26, 33, 36, 50, 52, 57, 61, 65, 67, 71, 72, 74, 80], [5, 10, 11, 14, 15, 21, 26, 31, 33, 36, 42, 49, 50, 53, 55, 61, 64, 65, 73, 77], [17, 18, 23, 25, 26, 35, 38, 40, 41, 45, 46, 52, 53, 54, 60, 62, 67, 68, 69, 71], [6, 8, 10, 11, 13, 14, 26, 29, 30, 31, 35, 38, 43, 45, 46, 48, 53, 62, 64, 75], [11, 12, 13, 14, 15, 17, 19, 31, 37, 38, 44, 45, 46, 53, 57, 59, 63, 73, 74, 77], [1, 7, 9, 23, 24, 25, 32, 33, 34, 40, 42, 45, 55, 57, 59, 65, 70, 74, 78, 79], [5, 10, 13, 14, 15, 27, 35, 39, 42, 44, 45, 53, 57, 58, 62, 64, 71, 72, 75, 76], [6, 7, 9, 10, 12, 13, 16, 19, 26, 34, 35, 38, 41, 42, 46, 48, 62, 67, 75, 77], [5, 10, 12, 15, 21, 28, 32, 33, 37, 38, 40, 43, 56, 59, 62, 66, 69, 70, 71, 75], [19, 20, 22, 29, 30, 31, 33, 34, 35, 37, 38, 39, 45, 47, 49, 52, 53, 69, 74, 78], [2, 4, 6, 9, 11, 15, 17, 18, 19, 24, 32, 35, 38, 39, 43, 44, 49, 55, 69, 72], [2, 5, 7, 13, 14, 16, 17, 18, 20, 23, 29, 39, 50, 53, 65, 66, 68, 69, 72, 73], [5, 12, 16, 18, 20, 26, 28, 32, 35, 36, 38, 51, 52, 55, 60, 61, 65, 67, 71, 73], [3, 8, 15, 25, 26, 27, 31, 32, 34, 36, 42, 46, 48, 49, 57, 58, 67, 71, 76, 78], [5, 6, 8, 9, 13, 17, 28, 30, 45, 48, 49, 52, 55, 59, 66, 71, 72, 74, 75, 78], [6, 7, 15, 18, 19, 26, 33, 38, 47, 49, 50, 54, 58, 60, 63, 67, 68, 69, 72, 73], [9, 13, 23, 25, 26, 30, 32, 41, 44, 47, 49, 54, 58, 68, 69, 73, 75, 76, 79, 80], [10, 15, 23, 25, 31, 36, 37, 41, 42, 45, 47, 51, 54, 55, 56, 58, 64, 72, 73, 78], [3, 6, 8, 12, 16, 17, 18, 19, 22, 23, 29, 37, 39, 40, 46, 50, 62, 69, 71, 79], [2, 6, 9, 18, 20, 21, 25, 28, 29, 39, 42, 44, 53, 57, 58, 61, 65, 72, 75, 78], [2, 8, 9, 11, 12, 26, 29, 31, 36, 37, 42, 46, 47, 53, 62, 66, 67, 76, 77, 78], [4, 5, 13, 16, 18, 22, 25, 32, 34, 36, 40, 47, 48, 52, 54, 58, 60, 68, 72, 73]] All_Value_List = ["Column_1", "Column_2", "Column_3", "Column_4", "Column_5", "Column_6", "Column_7", "Column_8", "Column_9", "Column_10", "Column_11", "Column_12", "Column_13", "Column_14", "Column_15", "Column_16", "Column_17", "Column_18", "Column_19", "Column_20"] Data1_df = pandas.DataFrame(data=user_input, columns=All_Value_List) for Pattern_Count in range(Start_Pattern, Stop_Pattern + 1): # Define column names columns_list = [] for Pattern in range(1, Pattern_Count + 1): columns_list.append(f"Pattern_{Pattern}") # Create All Patterns list Total_Patterns = [] Start_date = datetime.now() for row in Data1_df.iterrows(): row_Series = pandas.Series(row[1]) Current_row_list = [] Current_row_list = row_Series[All_Value_List].to_list() Current_row_list.sort() combination = combinations(Current_row_list, int(Pattern_Count)) for element in combination: Total_Patterns.append(element) End_date = datetime.now() Duration = End_date - Start_date print(f"Pattern{Pattern_Count} - All Patterns - {Duration}") # Detail statistic Start_date = datetime.now() Total_Patterns_np = numpy.asarray(Total_Patterns[:]) Total_Patterns_Count = Total_Patterns_np.shape[0] End_date = datetime.now() Duration = End_date - Start_date print(f"Pattern{Pattern_Count} - Total Patterns - {Duration}") Start_date = datetime.now() Unique_Patterns, Patterns_counter = numpy.unique(Total_Patterns_np, return_counts=True, axis=0) End_date = datetime.now() Duration = End_date - Start_date print(f"Pattern{Pattern_Count} - Unique Patters in - {Duration}") Single_apperance_count = numpy.count_nonzero(Patterns_counter == 1) Multiple_apperance_count = numpy.count_nonzero(Patterns_counter > 1) Repetition_Percentage = round(float(Multiple_apperance_count / (Single_apperance_count + Multiple_apperance_count) * 100),2) End_date = datetime.now() Продолжительность = Дата_конца – Дата_начала. print(f"Шаблон{Pattern_Count} - отдых - {Продолжительность}") Результат:
Шаблон1 — Все шаблоны — 0:00:00.084438 Шаблон1 – Всего шаблонов — 0:00:00 Pattern1 — Уникальные шаблоны за — 0:00:00 Шаблон1 – отдых – 0:00:00 Pattern2 — Все шаблоны — 0:00:00.099832 Pattern2 — Всего шаблонов — 0:00:00.029327 Pattern2 — уникальные шаблоны — 0:00:00.049045 Шаблон2 – отдых – 0:00:00.049045 Pattern3 — Все шаблоны — 0:00:00.203888 Pattern3 — Всего шаблонов — 0:00:00.132409 Pattern3 — уникальные шаблоны — 0:00:00.365536 Шаблон3 – отдых – 0:00:00.365536 Pattern4 — Все шаблоны — 0:00:00.305218 Pattern4 — Всего шаблонов — 0:00:00.595029 Pattern4 — Уникальные шаблоны — 0:00:02.091930 Шаблон4 – отдых – 0:00:02.094932 Pattern5 — Все шаблоны — 0:00:00.716169 Pattern5 — Всего шаблонов — 0:00:02.119798 Pattern5 — Уникальные шаблоны — 0:00:07.190706 Узор5 – отдых – 0:00:07.197252 Pattern6 — Все шаблоны — 0:00:01.538223 Pattern6 — Всего шаблонов — 0:00:05.875528 Pattern6 — уникальные шаблоны — 0:00:19,917748 Шаблон6 – отдых – 0:00:19.937238 --> программа должна подсчитать все перестановки для всех выбранных шаблонов от - до --> Самый трудоемкий код:
Unique_Patterns, Patterns_counter = numpy.unique(Total_Patterns_np, return_counts=True, axis=0)
Я ищу сборку движка в python/pandas/numpy/itertools, которая поможет мне эффективно решить мою проблему с перестановками.
У меня есть «большой» DataFrame чисел, и я пытаюсь построить все возможные уникальные комбинации n-элементов + счетчик вхождений этого элемента.
Пример:
[*]Этот пример имеет ограниченный размер Dataframe — реальный размер намного больше, и это вызывает экспоненциальную зависимость от времени.
импортировать панд из комбинаций импорта itertools Начальный_шаблон = 1 Стоп_Шаблон = 3 test_input = [ [6, 7, 14, 16, 17, 20, 31, 33, 35, 36, 40, 41, 48, 50, 55, 58, 60, 73, 76, 80], [1, 4, 7, 12, 14, 18, 25, 30, 36, 45, 50, 51, 54, 56, 57, 59, 61, 65, 68, 72], [7, 13, 19, 33, 35, 40, 46, 54, 57, 62, 64, 67, 68, 71, 72, 73, 74, 76, 79, 80], [9, 16, 20, 21, 24, 29, 34, 36, 39, 40, 44, 49, 52, 59, 60, 62, 70, 71, 76, 80], [1, 4, 5, 13, 15, 19, 23, 25, 33, 37, 39, 41, 45, 52, 60, 63, 64, 66, 67, 70], [5, 6, 10, 19, 22, 23, 24, 27, 28, 35, 41, 44, 57, 58, 61, 68, 70, 71, 77, 79], [1, 3, 6, 10, 17, 19, 28, 29, 38, 39, 45, 49, 50, 57, 58, 63, 69, 73, 78, 80], [2, 5, 6, 9, 15, 16, 19, 28, 36, 38, 40, 48, 56, 59, 61, 63, 68, 69, 73, 77], [1, 5, 8, 12, 17, 19, 26, 28, 32, 33, 35, 38, 57, 59, 61, 64, 75, 77, 79, 80], [2, 8, 9, 12, 16, 28, 33, 36, 37, 41, 46, 54, 55, 57, 58, 62, 64, 66, 77, 79], [2, 3, 10, 12, 20, 25, 28, 35, 37, 38, 39, 43, 44, 45, 46, 48, 53, 61, 65, 79], [7, 13, 17, 18, 19, 30, 32, 33, 34, 35, 36, 40, 45, 49, 63, 66, 68, 72, 79, 80], [7, 10, 14, 18, 21, 25, 26, 29, 31, 32, 42, 43, 46, 47, 57, 58, 65, 71, 74, 79], [1, 3, 7, 14, 23, 35, 39, 45, 48, 50, 51, 57, 59, 61, 62, 64, 65, 70, 75, 79], [1, 5, 7, 16, 18, 22, 27, 32, 40, 48, 50, 55, 59, 60, 64, 70, 72, 76, 78, 79], [1, 4, 8, 10, 12, 18, 21, 35, 38, 39, 41, 44, 47, 54, 60, 62, 65, 66, 78, 79], [2, 3, 5, 9, 10, 17, 19, 21, 23, 29, 32, 48, 49, 52, 60, 61, 66, 71, 76, 79], [6, 7, 11, 13, 19, 20, 21, 33, 36, 39, 41, 44, 45, 57, 60, 63, 65, 69, 70, 76], [2, 8, 15, 17, 22, 25, 26, 27, 29, 32, 42, 45, 52, 55, 62, 63, 65, 73, 74, 75], [1, 4, 6, 7, 8, 20, 24, 27, 28, 31, 34, 43, 46, 50, 56, 58, 59, 61, 68, 80], [3, 4, 9, 13, 14, 17, 19, 20, 28, 31, 32, 33, 36, 41, 53, 64, 67, 77, 78, 79], [7, 8, 11, 13, 20, 22, 23, 24, 31, 41, 42, 47, 55, 61, 62, 64, 67, 77, 78, 79], [2, 12, 15, 20, 30, 36, 40, 44, 47, 55, 58, 59, 60, 65, 69, 70, 71, 73, 75, 76], [1, 3, 5, 7, 8, 10, 18, 20, 21, 31, 40, 43, 49, 53, 60, 61, 63, 64, 68, 75], [16, 19, 21, 22, 24, 27, 28, 31, 32, 33, 35, 38, 41, 46, 53, 56, 58, 63, 66, 71], [1, 2, 4, 6, 13, 16, 18, 40, 44, 45, 49, 50, 53, 55, 56, 63, 68, 70, 73, 80], [3, 5, 12, 13, 20, 22, 23, 27, 28, 35, 36, 39, 42, 45, 53, 60, 62, 64, 69, 71], [3, 26, 27, 29, 32, 33, 35, 36, 39, 40, 43, 51, 57, 58, 59, 62, 67, 73, 78, 80], [8, 9, 10, 12, 18, 20, 21, 32, 34, 35, 41, 49, 53, 56, 57, 61, 62, 64, 76, 78], [4, 5, 9, 15, 17, 24, 36, 38, 43, 44, 50, 51, 53, 57, 59, 63, 66, 68, 72, 80], [3, 5, 8, 10, 13, 15, 16, 20, 23, 27, 28, 31, 36, 39, 55, 56, 57, 58, 68, 79], [5, 7, 8, 15, 16, 18, 23, 26, 30, 32, 37, 40, 47, 48, 52, 56, 65, 67, 72, 73], [3, 7, 12, 17, 30, 31, 39, 41, 43, 44, 54, 58, 59, 61, 66, 69, 74, 75, 77, 78], [2, 3, 7, 8, 16, 18, 21, 22, 25, 27, 28, 32, 33, 42, 45, 48, 51, 60, 66, 73], [8, 10, 11, 16, 21, 22, 24, 25, 31, 39, 41, 50, 51, 65, 67, 69, 70, 74, 76, 78], [5, 8, 14, 20, 22, 28, 33, 38, 45, 46, 50, 56, 57, 64, 69, 72, 73, 75, 77, 78], [7, 8, 9, 17, 20, 21, 23, 24, 25, 27, 29, 31, 34, 43, 49, 54, 63, 65, 71, 79], [13, 16, 18, 19, 20, 21, 22, 27, 39, 45, 51, 55, 59, 63, 65, 67, 70, 73, 78, 79], [3, 5, 7, 9, 13, 24, 27, 28, 36, 43, 44, 46, 48, 58, 61, 63, 66, 67, 71, 75], [9, 12, 14, 16, 19, 21, 34, 36, 41, 43, 45, 47, 52, 61, 64, 65, 69, 70, 71, 72], [6, 7, 11, 16, 18, 24, 35, 42, 47, 51, 55, 57, 59, 68, 69, 70, 71, 72, 74, 79], [3, 12, 18, 22, 27, 28, 38, 46, 47, 49, 54, 57, 64, 65, 68, 69, 76, 77, 78, 79], [2, 9, 12, 13, 22, 23, 29, 33, 34, 35, 36, 41, 44, 53, 56, 64, 65, 71, 72, 79], [1, 6, 14, 17, 21, 23, 25, 28, 30, 35, 37, 38, 39, 46, 47, 49, 52, 64, 68, 76], [8, 13, 16, 23, 31, 32, 40, 42, 44, 46, 57, 63, 64, 65, 66, 70, 71, 72, 74, 79], [1, 6, 8, 9, 15, 17, 18, 22, 24, 25, 27, 30, 42, 43, 46, 51, 52, 56, 59, 80], [1, 2, 6, 14, 16, 20, 22, 27, 30, 33, 38, 40, 45, 47, 54, 63, 64, 76, 79, 80], [1, 4, 8, 21, 29, 34, 35, 38, 43, 45, 47, 49, 52, 57, 60, 62, 63, 74, 75, 80], [1, 6, 9, 10, 18, 19, 23, 27, 33, 34, 37, 39, 42, 57, 63, 64, 67, 68, 69, 71], [3, 11, 15, 18, 25, 31, 34, 35, 40, 49, 50, 52, 54, 55, 57, 61, 69, 73, 79, 80], [4, 7, 10, 13, 19, 21, 22, 26, 36, 37, 38, 55, 57, 59, 64, 65, 69, 70, 71, 76], [1, 4, 9, 21, 26, 27, 33, 34, 35, 37, 45, 49, 56, 59, 62, 63, 65, 68, 73, 76], [3, 4, 15, 19, 20, 23, 26, 27, 29, 30, 33, 36, 44, 54, 61, 62, 67, 68, 73, 74], [1, 3, 4, 8, 9, 10, 13, 15, 18, 28, 32, 38, 47, 49, 51, 56, 57, 73, 75, 77], [7, 17, 18, 20, 26, 33, 38, 40, 42, 46, 51, 52, 55, 57, 61, 66, 67, 68, 77, 78], [3, 14, 20, 21, 29, 31, 33, 34, 38, 40, 41, 43, 45, 47, 49, 61, 63, 64, 65, 78], [8, 12, 20, 21, 23, 28, 31, 32, 35, 40, 44, 53, 55, 59, 60, 63, 65, 67, 69, 76], [9, 14, 15, 17, 19, 24, 25, 29, 38, 39, 46, 47, 48, 51, 56, 61, 64, 66, 69, 76], [5, 6, 10, 12, 17, 21, 30, 31, 40, 41, 43, 54, 57, 58, 62, 64, 65, 70, 75, 79], [2, 4, 12, 19, 35, 36, 38, 39, 45, 49, 51, 53, 54, 59, 60, 66, 72, 74, 75, 77], [2, 3, 4, 6, 8, 11, 14, 20, 23, 25, 33, 35, 40, 44, 46, 53, 59, 67, 77, 78], [3, 4, 5, 6, 8, 12, 16, 18, 19, 25, 30, 31, 41, 51, 52, 56, 57, 63, 64, 74], [5, 9, 14, 15, 16, 18, 19, 31, 35, 37, 38, 43, 45, 47, 56, 61, 64, 71, 75, 77], [7, 8, 9, 10, 14, 21, 22, 31, 35, 38, 47, 48, 51, 61, 62, 64, 68, 73, 75, 80], [14, 15, 17, 22, 23, 32, 36, 38, 42, 48, 49, 51, 56, 58, 63, 67, 68, 72, 73, 79], [2, 7, 8, 14, 15, 22, 23, 25, 32, 34, 36, 40, 49, 56, 57, 59, 62, 69, 76, 77], [5, 9, 11, 12, 15, 17, 25, 26, 29, 30, 31, 32, 38, 43, 56, 58, 62, 68, 71, 80], [4, 6, 10, 15, 18, 23, 26, 32, 42, 44, 47, 59, 63, 67, 69, 76, 77, 78, 79, 80], [2, 3, 9, 17, 20, 25, 28, 33, 34, 35, 36, 37, 49, 54, 55, 57, 60, 64, 65, 73], [6, 7, 12, 16, 17, 19, 22, 24, 27, 34, 39, 40, 41, 42, 49, 55, 64, 70, 73, 80], [2, 14, 16, 18, 28, 35, 39, 41, 45, 48, 50, 58, 64, 65, 69, 73, 75, 76, 77, 79], [8, 12, 16, 21, 23, 24, 28, 29, 31, 35, 36, 43, 45, 49, 53, 56, 57, 71, 72, 74], [2, 7, 8, 11, 15, 16, 17, 21, 23, 25, 34, 37, 42, 43, 46, 50, 53, 58, 78, 80], [1, 3, 5, 7, 13, 20, 27, 28, 30, 35, 38, 42, 45, 55, 62, 64, 65, 72, 73, 79], [6, 12, 15, 19, 32, 34, 35, 36, 44, 48, 54, 55, 63, 71, 73, 74, 75, 76, 77, 78], [6, 8, 11, 15, 16, 18, 21, 23, 28, 29, 35, 48, 53, 58, 63, 67, 71, 73, 75, 80], [3, 6, 7, 19, 21, 22, 29, 31, 44, 46, 51, 53, 56, 59, 61, 62, 68, 72, 78, 79], [4, 6, 7, 8, 22, 24, 28, 29, 32, 35, 37, 38, 44, 59, 61, 64, 69, 70, 73, 78], [5, 8, 13, 22, 23, 25, 26, 28, 30, 35, 41, 47, 50, 55, 62, 64, 66, 67, 69, 70], [5, 7, 11, 12, 19, 20, 35, 50, 51, 55, 57, 61, 64, 65, 67, 71, 74, 76, 78, 79], [5, 6, 9, 10, 17, 20, 24, 25, 26, 27, 28, 32, 38, 47, 54, 58, 60, 63, 71, 73], [1, 9, 10, 26, 35, 38, 42, 45, 51, 53, 62, 64, 66, 67, 68, 70, 71, 73, 75, 76], [7, 9, 10, 19, 20, 23, 34, 38, 44, 48, 56, 59, 61, 63, 67, 70, 71, 73, 79, 80], [6, 8, 11, 14, 24, 27, 30, 32, 33, 34, 42, 43, 45, 58, 61, 62, 69, 72, 75, 77], [8, 10, 11, 14, 22, 23, 24, 31, 38, 39, 40, 44, 52, 57, 61, 63, 67, 70, 77, 80], [1, 7, 8, 13, 15, 25, 29, 34, 37, 38, 42, 47, 48, 55, 59, 61, 64, 70, 74, 80], [6, 8, 10, 15, 22, 26, 31, 44, 45, 47, 49, 56, 57, 59, 65, 67, 68, 73, 75, 76], [12, 13, 14, 15, 25, 33, 40, 41, 43, 44, 46, 47, 52, 54, 57, 62, 63, 76, 79, 80], [3, 7, 11, 14, 15, 19, 26, 34, 39, 40, 46, 47, 48, 50, 53, 66, 67, 74, 78, 79], [6, 12, 13, 16, 19, 30, 36, 45, 46, 47, 48, 57, 59, 61, 62, 63, 64, 65, 67, 76], [1, 4, 5, 9, 20, 22, 26, 34, 36, 38, 40, 44, 48, 51, 55, 57, 61, 64, 69, 76], [4, 11, 12, 16, 21, 28, 32, 33, 35, 36, 37, 46, 52, 65, 67, 68, 69, 73, 74, 78], [3, 6, 8, 9, 10, 11, 14, 17, 21, 31, 34, 41, 45, 53, 62, 63, 70, 73, 74, 75], [2, 4, 12, 16, 17, 28, 29, 30, 31, 34, 36, 39, 40, 44, 45, 61, 68, 70, 71, 78], [1, 14, 21, 25, 26, 31, 37, 39, 40, 42, 52, 53, 56, 62, 63, 64, 66, 69, 77, 78], [4, 6, 11, 12, 22, 23, 37, 39, 40, 44, 46, 48, 51, 57, 58, 64, 68, 69, 74, 80], [2, 3, 5, 11, 19, 21, 30, 33, 34, 36, 37, 41, 43, 50, 59, 62, 73, 74, 76, 78], [2, 4, 20, 21, 24, 33, 36, 44, 50, 53, 54, 57, 60, 61, 65, 66, 67, 68, 74, 79], [7, 10, 19, 20, 27, 28, 30, 38, 42, 45, 46, 47, 54, 61, 64, 71, 75, 78, 79, 80], [1, 6, 9, 13, 14, 15, 17, 20, 21, 24, 27, 28, 35, 45, 52, 53, 55, 66, 69, 74], [1, 2, 8, 14, 16, 24, 25, 26, 30, 40, 43, 48, 51, 55, 60, 64, 66, 67, 69, 80], [2, 3, 12, 13, 14, 16, 19, 23, 26, 27, 41, 43, 46, 53, 55, 59, 65, 71, 72, 77], [4, 15, 17, 23, 27, 29, 30, 40, 44, 48, 50, 56, 59, 60, 61, 63, 66, 70, 71, 75], [6, 7, 9, 11, 18, 22, 26, 27, 32, 43, 48, 56, 59, 60, 61, 62, 71, 74, 78, 79], [2, 10, 14, 21, 30, 33, 42, 43, 45, 46, 48, 51, 55, 57, 64, 65, 73, 74, 78, 79], [11, 12, 15, 20, 23, 24, 32, 33, 34, 36, 49, 50, 53, 56, 59, 67, 68, 69, 70, 79], [19, 20, 22, 23, 24, 30, 31, 33, 41, 44, 45, 49, 55, 56, 58, 60, 67, 70, 76, 78], [5, 11, 14, 21, 23, 25, 29, 34, 37, 44, 48, 56, 59, 62, 64, 66, 67, 71, 74, 77], [2, 5, 11, 17, 19, 22, 24, 28, 31, 32, 34, 38, 44, 51, 55, 57, 60, 65, 66, 73], [1, 2, 3, 6, 7, 10, 17, 18, 19, 20, 24, 26, 32, 35, 40, 52, 57, 68, 69, 76], [4, 8, 13, 17, 29, 30, 31, 36, 41, 42, 43, 44, 49, 57, 60, 65, 67, 68, 69, 71], [2, 6, 9, 10, 13, 21, 24, 28, 32, 35, 37, 38, 42, 55, 57, 59, 61, 71, 76, 77], [5, 7, 11, 15, 31, 32, 33, 35, 40, 41, 48, 49, 51, 56, 67, 69, 76, 77, 78, 80], [6, 7, 14, 15, 18, 24, 26, 29, 44, 55, 56, 61, 63, 64, 66, 68, 70, 72, 73, 80], [3, 5, 11, 14, 19, 24, 25, 52, 53, 54, 62, 64, 66, 67, 73, 74, 75, 76, 77, 79], [4, 14, 19, 21, 22, 24, 26, 31, 32, 37, 40, 42, 47, 51, 56, 59, 66, 69, 73, 76], [5, 12, 17, 22, 28, 30, 37, 40, 52, 53, 56, 59, 61, 65, 68, 69, 73, 77, 78, 80], [5, 19, 20, 31, 34, 45, 49, 52, 54, 56, 57, 61, 65, 68, 73, 75, 76, 78, 79, 80], [4, 8, 9, 16, 20, 24, 28, 29, 34, 39, 41, 43, 49, 54, 55, 59, 60, 65, 72, 75], [3, 6, 8, 12, 14, 17, 23, 24, 26, 35, 39, 43, 47, 52, 53, 54, 57, 61, 62, 65], [6, 14, 15, 18, 19, 25, 26, 28, 30, 32, 37, 38, 39, 47, 52, 54, 62, 66, 70, 76], [7, 9, 10, 12, 18, 20, 25, 30, 32, 41, 44, 45, 48, 56, 61, 64, 67, 71, 74, 77], [1, 8, 9, 17, 19, 22, 33, 38, 39, 40, 42, 43, 45, 47, 50, 55, 56, 68, 76, 78], [8, 11, 16, 19, 22, 23, 25, 27, 35, 42, 43, 47, 48, 50, 51, 63, 65, 67, 73, 77], [6, 7, 10, 11, 13, 17, 24, 29, 33, 36, 41, 47, 50, 52, 58, 60, 62, 70, 71, 79], [4, 8, 13, 17, 19, 20, 22, 29, 30, 32, 38, 42, 46, 49, 53, 61, 62, 69, 71, 75], [4, 9, 10, 11, 20, 21, 23, 33, 40, 48, 53, 61, 64, 67, 69, 71, 73, 74, 78, 80], [2, 7, 10, 14, 17, 28, 30, 36, 42, 48, 52, 53, 54, 55, 59, 63, 65, 69, 74, 76], [9, 12, 13, 16, 22, 23, 28, 30, 31, 35, 44, 45, 47, 49, 51, 55, 60, 61, 62, 79], [4, 11, 19, 21, 23, 24, 34, 36, 39, 42, 47, 51, 52, 55, 63, 64, 69, 73, 76, 79], [8, 9, 10, 17, 19, 22, 33, 34, 35, 38, 39, 40, 43, 47, 53, 58, 60, 65, 68, 77], [1, 5, 9, 10, 11, 12, 17, 18, 23, 27, 28, 32, 41, 45, 57, 59, 64, 67, 73, 80], [5, 10, 14, 16, 31, 32, 34, 35, 36, 41, 43, 45, 46, 48, 58, 66, 70, 71, 78, 79], [6, 12, 17, 23, 24, 25, 27, 30, 34, 46, 48, 49, 51, 54, 56, 62, 63, 67, 71, 79], [4, 10, 11, 13, 14, 15, 24, 25, 26, 31, 39, 44, 47, 49, 51, 57, 63, 66, 76, 78], [1, 9, 10, 11, 14, 20, 21, 23, 30, 36, 37, 38, 40, 43, 45, 52, 53, 67, 75, 76], [5, 7, 9, 12, 17, 18, 24, 26, 27, 30, 31, 33, 43, 45, 48, 49, 55, 61, 68, 69], [2, 7, 13, 22, 33, 36, 37, 39, 41, 45, 51, 53, 54, 59, 64, 66, 72, 74, 76, 77], [2, 7, 9, 10, 19, 21, 22, 24, 35, 46, 51, 53, 54, 55, 59, 60, 62, 65, 74, 80], [4, 7, 9, 11, 16, 20, 22, 27, 33, 45, 47, 51, 52, 55, 66, 70, 71, 73, 77, 79], [4, 8, 10, 12, 24, 28, 29, 30, 35, 37, 41, 50, 51, 56, 59, 63, 67, 68, 69, 76], [3, 11, 20, 24, 27, 28, 34, 36, 41, 49, 50, 56, 59, 65, 66, 67, 70, 72, 76, 79], [6, 14, 17, 20, 25, 30, 34, 35, 36, 41, 46, 47, 51, 53, 58, 61, 62, 69, 73, 77], [1, 2, 4, 7, 10, 11, 14, 15, 26, 38, 40, 48, 49, 57, 58, 62, 69, 70, 77, 78], [1, 10, 14, 15, 19, 20, 21, 24, 26, 29, 31, 36, 40, 44, 53, 60, 64, 77, 78, 80], [1, 2, 4, 8, 21, 24, 25, 30, 39, 40, 43, 48, 52, 54, 62, 63, 64, 67, 68, 76], [3, 4, 8, 11, 12, 14, 20, 21, 26, 27, 30, 42, 50, 51, 58, 61, 64, 66, 70, 79], [2, 4, 5, 6, 12, 17, 20, 24, 30, 32, 36, 43, 45, 49, 54, 59, 63, 68, 75, 77], [5, 10, 11, 17, 18, 21, 27, 28, 33, 35, 36, 42, 44, 45, 49, 57, 62, 63, 74, 78], [3, 9, 12, 13, 18, 28, 29, 30, 31, 36, 38, 47, 50, 54, 59, 60, 73, 75, 76, 79], [5, 9, 12, 15, 28, 32, 35, 37, 38, 40, 41, 43, 45, 58, 60, 63, 64, 67, 74, 77], [2, 5, 7, 17, 20, 22, 23, 24, 30, 31, 40, 44, 56, 57, 58, 61, 62, 66, 70, 72], [3, 13, 19, 21, 22, 23, 34, 35, 37, 38, 39, 41, 43, 45, 50, 55, 66, 73, 77, 80], [6, 9, 10, 15, 21, 24, 28, 32, 34, 43, 49, 51, 53, 66, 68, 69, 72, 74, 77, 78], [6, 7, 11, 17, 22, 24, 26, 27, 29, 30, 47, 49, 50, 51, 53, 58, 65, 69, 74, 79], [3, 7, 11, 15, 17, 22, 23, 25, 34, 36, 40, 43, 46, 54, 55, 56, 59, 65, 67, 77], [2, 3, 4, 7, 9, 14, 17, 29, 32, 33, 40, 43, 46, 51, 53, 68, 69, 76, 79, 80], [4, 5, 9, 13, 18, 19, 24, 25, 26, 28, 32, 35, 43, 45, 53, 54, 58, 59, 64, 77], [4, 7, 9, 12, 18, 23, 24, 26, 38, 39, 46, 51, 54, 58, 63, 67, 68, 69, 70, 80], [1, 2, 12, 26, 31, 33, 35, 36, 45, 47, 48, 49, 56, 58, 60, 66, 69, 71, 74, 76], [6, 9, 10, 13, 15, 22, 24, 25, 27, 40, 42, 45, 51, 61, 63, 65, 68, 70, 72, 75], [4, 5, 7, 8, 11, 19, 22, 24, 25, 26, 27, 34, 40, 44, 45, 58, 60, 63, 64, 69], [12, 13, 14, 16, 25, 26, 31, 40, 45, 46, 48, 52, 53, 62, 64, 70, 72, 75, 77, 80], [2, 6, 10, 13, 20, 23, 24, 30, 32, 35, 46, 54, 62, 65, 68, 69, 70, 71, 75, 79], [1, 6, 9, 10, 12, 15, 17, 32, 37, 43, 48, 52, 57, 63, 64, 65, 72, 75, 76, 79], [5, 19, 20, 24, 28, 33, 34, 36, 40, 45, 47, 48, 49, 55, 58, 60, 68, 75, 77, 80], [4, 9, 11, 14, 19, 20, 22, 23, 30, 36, 46, 50, 51, 59, 63, 64, 70, 71, 77, 79], [1, 3, 4, 7, 16, 25, 29, 31, 38, 40, 41, 45, 46, 51, 58, 65, 71, 72, 78, 80], [3, 6, 11, 12, 23, 24, 34, 35, 36, 37, 40, 45, 48, 54, 55, 59, 63, 73, 76, 77], [13, 21, 25, 30, 39, 45, 47, 48, 51, 53, 55, 57, 58, 59, 60, 64, 71, 72, 73, 77], [4, 9, 10, 12, 15, 18, 29, 31, 33, 34, 35, 36, 40, 41, 49, 60, 61, 70, 73, 79], [1, 4, 12, 14, 22, 28, 29, 33, 34, 36, 48, 49, 50, 55, 58, 59, 60, 64, 71, 77], [9, 23, 24, 29, 30, 31, 32, 37, 38, 45, 54, 55, 57, 61, 62, 65, 68, 69, 71, 74], [8, 10, 14, 19, 22, 25, 26, 29, 30, 31, 32, 34, 42, 45, 46, 54, 65, 73, 78, 80], [1, 3, 5, 9, 17, 20, 22, 36, 39, 43, 49, 51, 54, 55, 63, 66, 67, 71, 74, 78], [2, 14, 16, 23, 24, 25, 31, 32, 34, 35, 42, 46, 48, 53, 55, 57, 71, 73, 75, 76], [3, 4, 7, 8, 19, 34, 37, 38, 40, 41, 42, 43, 45, 56, 58, 59, 61, 63, 65, 66], [4, 5, 9, 16, 19, 29, 30, 34, 35, 39, 44, 46, 47, 49, 50, 69, 72, 74, 75, 77], [1, 8, 20, 24, 26, 31, 32, 33, 39, 47, 54, 55, 60, 65, 68, 72, 74, 75, 77, 78], [4, 12, 13, 20, 24, 26, 27, 30, 39, 40, 46, 47, 50, 52, 53, 58, 66, 70, 71, 75], [2, 4, 9, 22, 24, 29, 30, 35, 39, 40, 43, 48, 49, 50, 51, 58, 60, 62, 75, 77], [2, 3, 10, 17, 19, 23, 34, 40, 41, 42, 47, 48, 49, 52, 59, 66, 70, 72, 75, 80], [5, 11, 12, 14, 15, 16, 22, 23, 26, 27, 30, 31, 47, 51, 53, 60, 63, 64, 67, 78], [1, 5, 8, 11, 21, 23, 26, 28, 30, 39, 47, 50, 57, 59, 61, 62, 71, 72, 74, 77], [6, 10, 13, 15, 18, 25, 26, 27, 28, 29, 33, 38, 41, 43, 47, 49, 52, 55, 61, 79], [5, 13, 19, 21, 29, 36, 37, 39, 44, 48, 50, 52, 56, 58, 67, 72, 73, 75, 76, 80], [3, 5, 8, 13, 15, 16, 20, 21, 29, 30, 31, 33, 35, 39, 40, 50, 51, 53, 61, 65], [3, 4, 7, 8, 9, 13, 15, 16, 18, 20, 22, 33, 38, 41, 44, 46, 51, 58, 60, 70], [13, 16, 18, 36, 37, 38, 39, 45, 48, 51, 52, 53, 57, 59, 65, 67, 68, 74, 78, 79], [2, 10, 18, 20, 24, 25, 27, 32, 40, 44, 47, 48, 49, 50, 51, 56, 71, 73, 74, 77], [2, 5, 10, 16, 23, 24, 25, 26, 34, 38, 39, 44, 46, 47, 52, 65, 67, 68, 71, 74], [5, 7, 13, 14, 18, 24, 26, 32, 42, 48, 51, 53, 54, 56, 65, 67, 70, 73, 77, 80], [2, 6, 13, 21, 26, 32, 34, 42, 43, 46, 47, 48, 50, 55, 58, 62, 70, 71, 73, 75], [4, 9, 15, 18, 20, 37, 42, 44, 49, 50, 53, 54, 59, 62, 64, 67, 71, 75, 77, 80], [3, 7, 9, 12, 16, 19, 22, 26, 27, 37, 39, 54, 55, 57, 59, 65, 70, 71, 73, 80], [6, 7, 8, 15, 16, 26, 31, 33, 36, 41, 43, 49, 50, 51, 54, 59, 63, 73, 74, 79], [3, 4, 5, 10, 15, 17, 31, 32, 35, 37, 38, 41, 63, 65, 67, 69, 71, 77, 79, 80], [1, 3, 4, 8, 16, 19, 20, 21, 23, 26, 27, 35, 43, 54, 57, 58, 60, 62, 68, 74], [1, 2, 5, 14, 15, 20, 21, 22, 23, 25, 28, 31, 35, 40, 58, 60, 68, 69, 72, 76], [2, 8, 10, 11, 15, 20, 22, 23, 24, 25, 26, 32, 40, 44, 46, 51, 53, 69, 70, 73], [6, 7, 10, 12, 18, 31, 35, 38, 46, 48, 55, 56, 58, 59, 60, 62, 66, 68, 74, 78], [6, 10, 11, 13, 19, 23, 27, 36, 39, 41, 42, 58, 62, 63, 65, 67, 68, 69, 71, 80], [3, 17, 18, 22, 23, 24, 28, 30, 38, 39, 44, 48, 54, 60, 62, 69, 73, 74, 75, 76], [5, 7, 8, 14, 19, 20, 24, 25, 27, 31, 32, 35, 39, 43, 53, 56, 64, 69, 73, 80], [1, 7, 15, 17, 22, 25, 32, 34, 36, 48, 49, 50, 51, 54, 60, 63, 70, 75, 76, 77], [1, 4, 13, 15, 16, 25, 26, 37, 38, 39, 40, 45, 48, 53, 54, 56, 57, 65, 66, 78], [1, 3, 6, 9, 23, 29, 35, 38, 41, 42, 45, 48, 49, 55, 56, 72, 74, 75, 79, 80], [2, 3, 9, 11, 14, 17, 21, 24, 29, 32, 36, 43, 49, 51, 55, 60, 61, 66, 75, 78], [6, 15, 17, 20, 24, 33, 34, 35, 44, 45, 48, 49, 53, 55, 64, 66, 70, 75, 76, 77], [1, 2, 5, 6, 7, 13, 20, 21, 22, 33, 37, 40, 48, 49, 51, 52, 56, 59, 73, 79], [1, 7, 15, 16, 17, 27, 30, 32, 34, 42, 43, 48, 50, 52, 56, 59, 61, 64, 70, 72], [10, 12, 14, 27, 31, 32, 33, 39, 41, 43, 55, 56, 57, 58, 59, 60, 71, 73, 74, 78], [1, 3, 5, 6, 8, 10, 13, 17, 21, 22, 24, 37, 46, 52, 57, 60, 61, 62, 65, 73], [2, 4, 5, 7, 13, 16, 18, 21, 32, 34, 35, 41, 46, 48, 57, 62, 63, 65, 70, 73], [1, 5, 7, 15, 22, 29, 30, 33, 36, 37, 38, 42, 43, 54, 56, 61, 66, 69, 70, 72], [2, 7, 10, 13, 18, 20, 26, 34, 37, 39, 42, 52, 53, 54, 57, 59, 62, 68, 74, 77], [4, 16, 20, 21, 22, 28, 29, 30, 32, 36, 39, 40, 41, 44, 46, 47, 49, 60, 63, 74], [4, 6, 7, 8, 13, 20, 24, 27, 28, 29, 39, 40, 42, 46, 47, 56, 57, 64, 67, 75], [8, 11, 15, 17, 18, 22, 26, 27, 28, 34, 37, 42, 43, 44, 45, 53, 54, 66, 74, 76], [1, 7, 12, 17, 31, 34, 36, 38, 46, 48, 54, 59, 62, 64, 70, 73, 74, 75, 76, 80], [5, 8, 18, 19, 20, 21, 25, 32, 38, 45, 47, 53, 58, 64, 67, 71, 74, 75, 77, 80], [11, 13, 14, 15, 20, 22, 26, 28, 29, 37, 40, 46, 51, 52, 55, 59, 70, 73, 78, 79], [5, 7, 10, 14, 16, 20, 21, 23, 24, 33, 40, 41, 42, 54, 58, 63, 67, 72, 78, 79], [7, 10, 17, 19, 20, 23, 26, 31, 32, 33, 37, 41, 42, 45, 47, 52, 53, 72, 73, 80], [1, 2, 3, 8, 10, 18, 21, 25, 27, 28, 35, 37, 43, 46, 50, 53, 57, 62, 63, 79], [4, 5, 6, 13, 16, 20, 21, 22, 25, 32, 35, 40, 44, 56, 57, 59, 61, 66, 69, 78], [9, 10, 12, 13, 18, 19, 22, 26, 31, 34, 35, 37, 51, 52, 56, 66, 73, 75, 76, 79], [5, 8, 15, 18, 27, 30, 33, 35, 40, 45, 51, 56, 65, 66, 67, 68, 71, 75, 76, 80], [1, 2, 3, 6, 12, 16, 17, 19, 33, 34, 38, 48, 51, 54, 55, 58, 61, 63, 67, 77], [1, 7, 18, 20, 23, 28, 29, 30, 37, 38, 44, 49, 51, 54, 62, 69, 70, 72, 75, 80], [3, 5, 8, 13, 15, 17, 20, 24, 25, 31, 34, 36, 40, 44, 53, 60, 62, 66, 70, 72], [7, 8, 13, 19, 22, 23, 26, 31, 35, 40, 50, 52, 53, 58, 61, 63, 65, 75, 76, 80], [1, 2, 6, 14, 16, 17, 19, 21, 33, 36, 39, 41, 44, 45, 48, 51, 64, 72, 75, 76], [3, 9, 17, 19, 20, 23, 25, 26, 33, 36, 50, 52, 57, 61, 65, 67, 71, 72, 74, 80], [5, 10, 11, 14, 15, 21, 26, 31, 33, 36, 42, 49, 50, 53, 55, 61, 64, 65, 73, 77], [17, 18, 23, 25, 26, 35, 38, 40, 41, 45, 46, 52, 53, 54, 60, 62, 67, 68, 69, 71], [6, 8, 10, 11, 13, 14, 26, 29, 30, 31, 35, 38, 43, 45, 46, 48, 53, 62, 64, 75], [11, 12, 13, 14, 15, 17, 19, 31, 37, 38, 44, 45, 46, 53, 57, 59, 63, 73, 74, 77], [1, 7, 9, 23, 24, 25, 32, 33, 34, 40, 42, 45, 55, 57, 59, 65, 70, 74, 78, 79], [5, 10, 13, 14, 15, 27, 35, 39, 42, 44, 45, 53, 57, 58, 62, 64, 71, 72, 75, 76], [6, 7, 9, 10, 12, 13, 16, 19, 26, 34, 35, 38, 41, 42, 46, 48, 62, 67, 75, 77], [5, 10, 12, 15, 21, 28, 32, 33, 37, 38, 40, 43, 56, 59, 62, 66, 69, 70, 71, 75], [19, 20, 22, 29, 30, 31, 33, 34, 35, 37, 38, 39, 45, 47, 49, 52, 53, 69, 74, 78], [2, 4, 6, 9, 11, 15, 17, 18, 19, 24, 32, 35, 38, 39, 43, 44, 49, 55, 69, 72], [2, 5, 7, 13, 14, 16, 17, 18, 20, 23, 29, 39, 50, 53, 65, 66, 68, 69, 72, 73], [5, 12, 16, 18, 20, 26, 28, 32, 35, 36, 38, 51, 52, 55, 60, 61, 65, 67, 71, 73], [3, 8, 15, 25, 26, 27, 31, 32, 34, 36, 42, 46, 48, 49, 57, 58, 67, 71, 76, 78], [5, 6, 8, 9, 13, 17, 28, 30, 45, 48, 49, 52, 55, 59, 66, 71, 72, 74, 75, 78], [6, 7, 15, 18, 19, 26, 33, 38, 47, 49, 50, 54, 58, 60, 63, 67, 68, 69, 72, 73], [9, 13, 23, 25, 26, 30, 32, 41, 44, 47, 49, 54, 58, 68, 69, 73, 75, 76, 79, 80], [10, 15, 23, 25, 31, 36, 37, 41, 42, 45, 47, 51, 54, 55, 56, 58, 64, 72, 73, 78], [3, 6, 8, 12, 16, 17, 18, 19, 22, 23, 29, 37, 39, 40, 46, 50, 62, 69, 71, 79], [2, 6, 9, 18, 20, 21, 25, 28, 29, 39, 42, 44, 53, 57, 58, 61, 65, 72, 75, 78], [2, 8, 9, 11, 12, 26, 29, 31, 36, 37, 42, 46, 47, 53, 62, 66, 67, 76, 77, 78], [4, 5, 13, 16, 18, 22, 25, 32, 34, 36, 40, 47, 48, 52, 54, 58, 60, 68, 72, 73]] All_Value_List = ["Column_1", "Column_2", "Column_3", "Column_4", "Column_5", "Column_6", "Column_7", "Column_8", "Column_9", "Column_10", "Column_11", "Column_12", "Column_13", "Column_14", "Column_15", "Column_16", "Column_17", "Column_18", "Column_19", "Column_20"] Data1_df = pandas.DataFrame(data=user_input, columns=All_Value_List) for Pattern_Count in range(Start_Pattern, Stop_Pattern + 1): # Define column names columns_list = [] for Pattern in range(1, Pattern_Count + 1): columns_list.append(f"Pattern_{Pattern}") # Create All Patterns list Total_Patterns = [] Start_date = datetime.now() for row in Data1_df.iterrows(): row_Series = pandas.Series(row[1]) Current_row_list = [] Current_row_list = row_Series[All_Value_List].to_list() Current_row_list.sort() combination = combinations(Current_row_list, int(Pattern_Count)) for element in combination: Total_Patterns.append(element) End_date = datetime.now() Duration = End_date - Start_date print(f"Pattern{Pattern_Count} - All Patterns - {Duration}") # Detail statistic Start_date = datetime.now() Total_Patterns_np = numpy.asarray(Total_Patterns[:]) Total_Patterns_Count = Total_Patterns_np.shape[0] End_date = datetime.now() Duration = End_date - Start_date print(f"Pattern{Pattern_Count} - Total Patterns - {Duration}") Start_date = datetime.now() Unique_Patterns, Patterns_counter = numpy.unique(Total_Patterns_np, return_counts=True, axis=0) End_date = datetime.now() Duration = End_date - Start_date print(f"Pattern{Pattern_Count} - Unique Patters in - {Duration}") Single_apperance_count = numpy.count_nonzero(Patterns_counter == 1) Multiple_apperance_count = numpy.count_nonzero(Patterns_counter > 1) Repetition_Percentage = round(float(Multiple_apperance_count / (Single_apperance_count + Multiple_apperance_count) * 100),2) End_date = datetime.now() Продолжительность = Дата_конца – Дата_начала. print(f"Шаблон{Pattern_Count} - отдых - {Продолжительность}") Результат:
Шаблон1 — Все шаблоны — 0:00:00.084438 Шаблон1 – Всего шаблонов — 0:00:00 Pattern1 — Уникальные шаблоны за — 0:00:00 Шаблон1 – отдых – 0:00:00 Pattern2 — Все шаблоны — 0:00:00.099832 Pattern2 — Всего шаблонов — 0:00:00.029327 Pattern2 — уникальные шаблоны — 0:00:00.049045 Шаблон2 – отдых – 0:00:00.049045 Pattern3 — Все шаблоны — 0:00:00.203888 Pattern3 — Всего шаблонов — 0:00:00.132409 Pattern3 — уникальные шаблоны — 0:00:00.365536 Шаблон3 – отдых – 0:00:00.365536 Pattern4 — Все шаблоны — 0:00:00.305218 Pattern4 — Всего шаблонов — 0:00:00.595029 Pattern4 — Уникальные шаблоны — 0:00:02.091930 Шаблон4 – отдых – 0:00:02.094932 Pattern5 — Все шаблоны — 0:00:00.716169 Pattern5 — Всего шаблонов — 0:00:02.119798 Pattern5 — Уникальные шаблоны — 0:00:07.190706 Узор5 – отдых – 0:00:07.197252 Pattern6 — Все шаблоны — 0:00:01.538223 Pattern6 — Всего шаблонов — 0:00:05.875528 Pattern6 — уникальные шаблоны — 0:00:19,917748 Шаблон6 – отдых – 0:00:19.937238 --> программа должна подсчитать все перестановки для всех выбранных шаблонов от - до --> Самый трудоемкий код:
Unique_Patterns, Patterns_counter = numpy.unique(Total_Patterns_np, return_counts=True, axis=0)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Каков наиболее эффективный способ получить уникальные элементы из отсортированного списка?
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Каков наиболее эффективный способ получить уникальные элементы из отсортированного списка?
Anonymous » » в форуме Python - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Каков наиболее эффективный способ получить уникальные элементы из отсортированного списка?
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Каков наиболее эффективный способ получить уникальные элементы из отсортированного списка?
Anonymous » » в форуме Python - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Каков наиболее эффективный способ получить уникальные элементы из отсортированного списка?
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-