Python 以numpy格式在数据数组中生成所有可能的值?

Python 以numpy格式在数据数组中生成所有可能的值?,python,numpy,multidimensional-array,game-theory,gambit,Python,Numpy,Multidimensional Array,Game Theory,Gambit,我正在使用python中的gambit以博弈论的方式模拟一个世界。博弈的一个结构是将“结果”保存为每个参与者做出的一系列决策。其形式如下: 游戏[d1,d2,d3,…,dn][n]=回报 其中,d1是玩家1做出的决策索引,d2是玩家2做出的决策索引,依此类推,n是为其存储收益的玩家的索引 现在,可能有不同数量的玩家,因此传递到游戏对象的索引维度可能会改变 如何从[0,0,…,0]到[8,8,…,8](其中维度=玩家数量=n)生成序列,以便将它们存储到[d1,d2,d3,…,dn] 看看pyth

我正在使用python中的gambit以博弈论的方式模拟一个世界。博弈的一个结构是将“结果”保存为每个参与者做出的一系列决策。其形式如下:

游戏[d1,d2,d3,…,dn][n]=回报

其中,
d1
是玩家1做出的决策索引,
d2
是玩家2做出的决策索引,依此类推,
n
是为其存储
收益的玩家的索引

现在,可能有不同数量的玩家,因此传递到
游戏
对象的索引维度可能会改变


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

看看python的
itertools
模块。听起来
产品
功能可以满足您的需求

例如:

import itertools as it
 list(it.product(*[range(2)]*3))
给出所有长度为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
还有很多其他的可能性,特别是它还提供了
排列
组合

但不太清楚您需要什么。是否要单独生成[0,0,0,…]和[n,n,n,n,…]之间的所有组合(排列?),每个组合的长度为
n
?或者你只是需要一个数组的形状(n,n,n)来填充东西?你能给我们举一个最简单的例子来说明两个玩家的期望值吗?对于可能的决策数量是否有维度?@wwii I希望生成[0,0,0,…,0]和[8,8,8,…,8]之间的所有排列,其中索引的维度(长度?)为n。我必须根据n的某个值动态地执行此操作。
n
可能有多大?除非
n
非常小,否则组合的总数将占用大量RAM。顺便说一句,这种组合称为笛卡尔积。在纯Python中,您可以使用
itertools.product
生成它。在Numpy有很多制作笛卡尔产品的方法。