在 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
还有很多其他的可能性,特别是它还提供了permutations
和combinations
。
我在 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
还有很多其他的可能性,特别是它还提供了permutations
和combinations
。