如何将NumPy数组存储为Python中的键

时间:2018-03-14 13:36:59

标签: python arrays numpy reinforcement-learning

我有一组长度为3的NumPy数组。 E.g:

[ [0,0,0], [0,0,1], [0,0,2], [0,1,0],[0,1,1],... ]

对于这些NumPy数组中的每一个,我想存储一个不断更新的列表,并以某种方式链接到特定的NumPy数组。

例如,如果对于我的NumPy数组[0,0,1],我有一个相应的列表[1,1,1,1,0,-1,-1,1,1,1],我将如何将NumPy数组映射到此列表。

我考虑过使用字典,但Python似乎不允许将NumPy数组用作字典中的键。

显然,我有200个NumPy数组,我将其视为特定问题的状态。这些状态被指定为三元组,我使用的是NumPy数组。这是我的问题的要求。这些状态中的每一个都有一组奖励,我目前将其用作列表。

因此,我需要将每个州表示链接到该州的奖励列表。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

正如@chepner所提到的,你永远不能使用numpy数组作为键,因为它们是可变的。要解决您的问题,您可以尝试使用词典字典。格式可能是一个很长的路线:

{'000': {state: [0,0,0], rewards: [1,1,1,1,0,-1,-1,1,1,1]}, 
 '001': {state: [0,0,1], rewards: [1,1,1,1,0,-1,-1,1,1,1]}, ...}

通过这种方式,您可以将所有内容保持为所需的格式,循环播放,并将状态和奖励捆绑在一起。请注意,我选择了键作为状态的字符串版本,但是你可以做出对你的特定问题有意义的任何事情。