如何将2个数组编码为一个整数

问题描述 投票:-1回答:1

我为一个简单的游戏建模,并且我有一个表示游戏状态的数组。

有n个代理商。作为一种状态,我会跟踪代理人和游戏的最后获胜者每轮的位置。

每个代理人可以有3个可能的职位,最后一个获胜者还有n ^ 2个可能的组合。

因此状态空间的大小为[3 ^ n,2 ^ n]。排名单元格可以采用0-2的值,最后获胜者单元可以采用0-1或True / False。

我想对每个状态进行编码,因此以后可以将Q函数的值存储在二维ndarray中。 Q数组的一个轴将是状态,而其他动作将。

简单地说:我有2种不同的数据结构:一种具有n元素,其值的范围是0-2,另一种具有n个元素的值的范围是0到1,我想创建一个0到3 ^ n * 2 ^的整数n代表这两个数组的每种可能组合。

我试图使用字典,但是字典变得非常庞大。我是python新手,对内置的int函数和库不是很熟悉。

非常感谢!

python reinforcement-learning
1个回答
0
投票

由于缺少详细信息,不确定您要问什么。但是我假设您想将元组(n1, n2, n3, b1, b2,... ,bn)映射到唯一的整数,其中(n1, n2, n3)range(n)中,而bk{0,1}中。然后,此公式应该起作用:

n1 + n*n2 + n**2*n3 + n**3*b

其中b是其二进制表示为b1 b2 b3 ... bn的整数,并且可以通过例如方法获得]]

int("".join(str(k) for k in (b1, b2,..., bn)), 2)

尽管可能会有更有效的方法。请参见此处以获取想法Convert base-2 binary number string to int

© www.soinside.com 2019 - 2024. All rights reserved.