Генерация numpy массивов для перестановок с ограничениями - PullRequest
0 голосов
/ 14 февраля 2020

Короче говоря, я пытаюсь сгенерировать все возможные перестановки из набора numpy массивов. У меня есть три числа [j, k, m], и я хотел бы указать максимальное значение для каждого [J, K, M]. Как бы я тогда получил все комбинации массивов под эти значения? Как я могу заставить значения k всегда быть одинаковыми? Например:

Таким образом, с максимальными значениями, установленными на [1,2,2], перестановки будут: [0,0,0], [0,0,1], [0,0, 2], [0,2,0], [0,2,1], [0,2,2], [1,0,0], [1,0,1] ...

Я понимаю, что у меня нет примера кода для показа, но я боюсь, что буквально не знаю, с чего начать.

Из других ответов кажется, что sympy будет чем-то полезен?

1 Ответ

1 голос
/ 15 февраля 2020

Я нашел ответ, который может вас заинтересовать здесь и обобщил его. Таким образом, вы можете построить список возможных значений для каждого элемента следующим образом:

X = [[0, 1], [0, 1, 2], [0, 1, 2]]

И затем использовать:

np.array(np.meshgrid(*X)).T.reshape(-1, len(X))

Вывод содержит 18 элементов, которые вы хотели. На самом деле, если у вас есть только максимальные значения [J, K, L], вы можете построить X, используя X = [range(J+1), range(K+1), range(L+1)]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...