Генерация всех возможных значений в ndarray в numpy?

Я использую гамбит в Python для симуляции мира в игровой форме. Одним из конструктов гамбита является сохранение "результатов" для набора решений, принимаемых каждым вовлеченным игроком. Это имеет вид:

game[d1,d2,d3,...,dn][n] = payoff

где d1 индекс решения, принятого игроком 1, d2 индекс решения, принятого игроком 2, и так далее, и n это индекс игрока, для которого payoff хранится.

Теперь может быть переменное количество игроков, поэтому измерение индекса передается в game объект может измениться

как мне создать серию из [0,0,...,0] через [8,8,...,8] (где измерение = количество игроков = n), чтобы я мог сохранить их в [d1,d2,d3,...,dn]?

1 ответ

Решение

Посмотрите на питона itertools модуль. Это звучит как product Функция будет делать то, что вы хотите.

Пример:

import itertools as it
 list(it.product(*[range(2)]*3))

Дает все списки длины три с двумя элементами

[(0, 0, 0),
(0, 0, 1),
(0, 1, 0),
(0, 1, 1),
(1, 0, 0),
(1, 0, 1),
(1, 1, 0),
(1, 1, 1)]

Есть много других возможностей с itertoolsв частности это также обеспечивает permutations а также combinations,

Другие вопросы по тегам