在 numpy 的 ndarray 中生成所有可能的值?

Generating all the possible values in a ndarray in numpy?

我在 python 中使用 gambit 以博弈论的方式模拟世界。 gambit 的一个构造是保存 "outcomes" 用于每个参与的玩家做出的一组决定。这是以下形式:

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

其中d1是玩家1的决策索引,d2是玩家2的决策索引,依此类推,n是玩家2的索引payoff 存储的玩家。

现在,玩家数量可能会发生变化,因此传递给 game 对象的索引维度可能会发生变化

如何生成从 [0,0,...,0][8,8,...,8] 的系列(其中维度 = 玩家数量 = n),以便我可以将它们存储到 [d1,d2,d3,...,dn] 中?

看看 python 的 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还有很多其他的可能性,特别是它还提供了permutationscombinations