#python #python-3.x
#python #python-3.x
Вопрос:
Мне нужна матрица со всеми возможными числовыми комбинациями с учетом k чисел и суммы строк, равной 1. Один простой пример:
числа = [0, 0.5, 1]
Эти числа необходимо переставить в матрицу со всеми возможными комбинациями чисел, складывающимися до 1. Важно, чтобы присутствовали все k чисел. В этом простом случае конечный результат должен быть таким. Все числа присутствуют, и каждая строка добавляет до 1:
d = {'1': [1, 0, 0, 0.5, 0.5, 0], '2': [0, 0, 1, 0.5, 0, 0.5], '3':[0, 1, 0, 0, 0.5, 0.5]}
До сих пор я пробовал использовать itertools.permutations через приведенный ниже код:
numbers = list(itertools.permutations([0,0.5,1], 3))
Тем не менее, я изо всех сил пытаюсь получить желаемый результат в соответствии с заданными критериями. Я предполагаю, что я должен применять itertools в сочетании с некоторым условным выражением суммы значений строк.
Кто-нибудь хочет помочь? Был бы высоко оценен!!
Комментарии:
1. Некоторые моменты, которые делают этот вопрос совершенно запутанным. Ожидаемый результат не является матрицей. «Строки» не складываются до 1. Почему длина каждой строки содержит 6 элементов? …?
2. но я думаю, что в примере
[1, 0, 0, 0.5, 0.5, 0]
каждая строка добавляет до 2?3. Если вы суммируете вектор на вектор, у вас будет [1,1,1,1, …] , я думаю, это то, что он имеет в виду?
Ответ №1:
Быстрый старт
Это всего лишь краткое резюме совет при решении этой проблемы.
-
Попробуйте отредактировать свой вопрос, пока все не поймут: чем проще его понять всем, тем проще он будет казаться и вам.
-
Ваша проблема связана с комбинацией, но не совсем так, как вы думаете:
Если вы перевернете свою проблему с ног на голову :
Для каждого столбца
- Сначала решите, хотите ли вы a
1
или 20.5
. - Затем выберите (по комбинации) индексы для этих элементов
Отображение матрицы
- Создайте матрицу [0] * n * n
- Для каждого столбца заполните то, что вы выбрали из приведенного выше.
Если вы все сделаете правильно, у вас должно быть декартово произведение размера
- Количество возможностей для столбцов *
- Количество столбцов