ljpzzz / machinelearning

My blogs and code for machine learning. http://cnblogs.com/pinard

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

语法解答

bailingbird opened this issue · comments

在sarsa_windygrid文件中第83行有一句我不太理解这句话的构造,但是我能懂什么意思。麻烦您给详细解释一下语法问题。这句话应该是表示选出最大Q值的动作。enumerate我懂什么意思,但是choice括号里的连起来我就不太懂了,麻烦您给详解一下。
next_action = np.random.choice([action_ for action_, value_ in enumerate(values_) if value_ == np.max(values_)])

你好,这里的意思是如果最大的Q值对应的动作不止一个,那么在这些最大Q值动作里随机选择一个。

你好,这里的意思是如果最大的Q值对应的动作不止一个,那么在这些最大Q值动作里随机选择一个。

这个意思我明白的,就是action_ for action_, value_ in enumerate(values_) if value_ == np.max(values_)这种写法我目前还掌握不了,初学Python,这句话应该怎么去拆分理解呢?

你好,这样的语法糖可以不使用。
你可以先做for循环,遍历所有的动作和对应的价值。记录最大价值,和最大动作对应的动作值,把对应的动作index放在一个数组。
最后在动作index数组中任选一个动作。这样就把代码拆的简单易懂了。