class_docstr: Splits an actions into separate ones.
  
  An example is given by the LunarLanderContinuous-v2 env. Here we have a box action spaces with shape (2,) such that
  dimension 0 is the up/down action and dimension 1 is the left/right action. Now if we would like to split this
  action correspondingly we can wrap the env with the following config:
  
  split_config:
      action:
          action_up:
              indices: [0]
          action_side:
              indices: [1]
  
  Now the actions as well as the action space is consists of two actions (action_up/action_side).
  
  :param env: Environment/wrapper to wrap.
  :param split_config: The action splitting configuration.
class_docstr_tok: ["Splits","an","actions","into","separate","ones",".","An","example","is","given","by","the","LunarLanderContinuous-v2","env",".","Here","we","have","a","box","action","spaces","with","shape","(","2",",",")","such","that","dimension","0","is","the","up\/down","action","and","dimension","1","is","the","left\/right","action",".","Now","if","we","would","like","to","split","this","action","correspondingly","we","can","wrap","the","env","with","the","following","config",":","split_config",":","action",":","action_up",":","indices",":","[","0","]","action_side",":","indices",":","[","1","]","Now","the","actions","as","well","as","the","action","space","is","consists","of","two","actions","(","action_up\/action_side",")",".",":","param","env",":","Environment\/wrapper","to","wrap",".",":","param","split_config",":","The","action","splitting","configuration","."]
docstr: Implementation of :class:`~maze.core.wrappers.wrapper.ActionWrapper` interface.
          
docstr_tok: ["Implementation","of",":","class",":","`","~maze.core.wrappers.wrapper.ActionWrapper","`","interface","."]
code: def reverse_action(
      self, action: Dict[str, np.ndarray]
  ) -> Dict[str, np.ndarray]:
      """Implementation of :class:`~maze.core.wrappers.wrapper.ActionWrapper` interface."""
      new_action = {}
      for org_action_name, org_action in action.items():
          if org_action_name in self.split_config:
              for (
                  new_action_key,
                  new_action_config,
              ) in self.split_config[org_action_name].items():
                  new_action[new_action_key] = np.stack(
                      [
                          org_action[select_index]
                          for select_index in new_action_config[
                              "indices"
                          ]
                      ]
                  )
          else:
              new_action[org_action_name] = action[org_action_name]
  
      return new_action
  
file_path: maze/maze/core/wrappers/split_actions_wrapper.py
imports: from typing import Union, Dict, Tuple, List
  import gym
  import numpy
  from maze.core.annotations import override
  from maze.core.env.simulated_env_mixin import SimulatedEnvMixin
  from maze.core.env.structured_env import StructuredEnv
  from maze.core.env.structured_env_spaces_mixin import StructuredEnvSpacesMixin
  from maze.core.wrappers.wrapper import ActionWrapper, EnvType
label_desc: Use image node_id 7 for calling the SplitActionsWrapper obj's underlying member method code with example usage: obj.reverse_action(action) and returns: new_action