class_docstr: Implement the epsilon greedy policy
  
  Eps Greedy policy either:
  
  - takes a random action with probability epsilon
  - takes current best action with prob (1 - epsilon)
class_docstr_tok: ["Implement","the","epsilon","greedy","policy","Eps","Greedy","policy","either",":","-","takes","a","random","action","with","probability","epsilon","-","takes","current","best","action","with","prob","(","1","-","epsilon",")"]
docstr: Return the selected action
  
  # Arguments
      q_values (np.ndarray): List of the estimations of Q for each action
  
  # Returns
      Selection action
code: def select_action(self, q_values):
      """Return the selected action
  
      # Arguments
          q_values (np.ndarray): List of the estimations of Q for each action
  
      # Returns
          Selection action
      """
      assert q_values.ndim == 1
      nb_actions = q_values.shape[0]
  
      if np.random.uniform() < self.eps:
          action = np.random.randint(0, nb_actions)
      else:
          action = np.argmax(q_values)
      return action
  
imports: from __future__ import division
  import numpy
  from rl.util import *
label_desc: Use image node_id 2 for calling the EpsGreedyQPolicy obj's underlying member method code with example usage: obj.select_action(q_values) and returns: action