<linkrel="index"title="Index"href="../../genindex/"/><linkrel="search"title="Search"href="../../search/"/><linkrel="next"title="Fundamental Spaces"href="fundamental/"/><linkrel="prev"title="Make and register"href="../registry/"/>
<liclass="toctree-l1 current has-children current-page"><aclass="current reference internal"href="#">Spaces</a><inputchecked=""class="toctree-checkbox"id="toctree-checkbox-1"name="toctree-checkbox-1"role="switch"type="checkbox"/><labelfor="toctree-checkbox-1"><divclass="visually-hidden">Toggle navigation of Spaces</div><iclass="icon"><svg><usehref="#svg-arrow-right"></use></svg></i></label><ul>
<liclass="toctree-l1 has-children"><aclass="reference internal"href="../../environments/toy_text/">Toy Text</a><inputclass="toctree-checkbox"id="toctree-checkbox-6"name="toctree-checkbox-6"role="switch"type="checkbox"/><labelfor="toctree-checkbox-6"><divclass="visually-hidden">Toggle navigation of Toy Text</div><iclass="icon"><svg><usehref="#svg-arrow-right"></use></svg></i></label><ul>
<liclass="toctree-l2"><aclass="reference internal"href="../../tutorials/gymnasium_basics/environment_creation/">Make your own custom environment</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../../tutorials/gymnasium_basics/vector_envs_tutorial/">Training A2C with Vector Envs and Domain Randomization</a></li>
<liclass="toctree-l1 has-children"><aclass="reference internal"href="../../tutorials/training_agents/">Training Agents links in the Gymnasium Documentation</a><inputclass="toctree-checkbox"id="toctree-checkbox-9"name="toctree-checkbox-9"role="switch"type="checkbox"/><labelfor="toctree-checkbox-9"><divclass="visually-hidden">Toggle navigation of Training Agents links in the Gymnasium Documentation</div><iclass="icon"><svg><usehref="#svg-arrow-right"></use></svg></i></label><ul>
<liclass="toctree-l2"><aclass="reference internal"href="../../tutorials/training_agents/reinforce_invpend_gym_v26/">Training using REINFORCE for Mujoco</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../../tutorials/training_agents/blackjack_tutorial/">Solving Blackjack with Q-Learning</a></li>
<liclass="toctree-l1"><aclass="reference external"href="https://github.com/Farama-Foundation/Gymnasium/blob/main/docs/README.md">Contribute to the Docs</a></li>
<p>Spaces describe mathematical sets and are used in Gym to specify valid actions and observations.
Every Gym environment must have the attributes <codeclass="docutils literal notranslate"><spanclass="pre">action_space</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">observation_space</span></code>.
If, for instance, three possible actions (0,1,2) can be performed in your environment and observations
are vectors in the two-dimensional unit cube, the environment code may contain the following two lines:</p>
<emclass="property"><spanclass="pre">class</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">gymnasium.spaces.</span></span><spanclass="sig-name descname"><spanclass="pre">Space</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">shape</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><aclass="reference internal"href="composite/#gymnasium.spaces.Sequence"title="gymnasium.spaces.Sequence"><spanclass="pre">Sequence</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">dtype</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">npt.DTypeLike</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">seed</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">int</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">np.random.Generator</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../_modules/gymnasium/spaces/space/#Space"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#gymnasium.spaces.Space"title="Link to this definition">¶</a></dt>
<li><p>They allow us to work with highly structured data (e.g. in the form of elements of <aclass="reference internal"href="composite/#gymnasium.spaces.Dict"title="gymnasium.spaces.Dict"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Dict</span></code></a> spaces)
<p>Different spaces can be combined hierarchically via container spaces (<aclass="reference internal"href="composite/#gymnasium.spaces.Tuple"title="gymnasium.spaces.Tuple"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Tuple</span></code></a> and <aclass="reference internal"href="composite/#gymnasium.spaces.Dict"title="gymnasium.spaces.Dict"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Dict</span></code></a>) to build a
<aclass="reference internal"href="composite/#gymnasium.spaces.Dict"title="gymnasium.spaces.Dict"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Dict</span></code></a>). Note that parametrized probability distributions (through the
<li><p><strong>shape</strong> (<em>Optional</em><em>[</em><aclass="reference internal"href="composite/#gymnasium.spaces.Sequence"title="gymnasium.spaces.Sequence"><em>Sequence</em></a><em>[</em><em>int</em><em>]</em><em>]</em>) – If elements of the space are numpy arrays, this should specify their shape.</p></li>
<li><p><strong>dtype</strong> (<em>Optional</em><em>[</em><em>Type</em><em> | </em><em>str</em><em>]</em>) – If elements of the space are numpy arrays, this should specify their dtype.</p></li>
<li><p><strong>seed</strong>– Optionally, you can use this argument to seed the RNG that is used to sample from the space</p></li>
<emclass="property"><spanclass="pre">property</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">shape</span></span><emclass="property"><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="pre">tuple</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">...</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#gymnasium.spaces.Space.shape"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="pre">property</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">dtype</span></span><aclass="headerlink"href="#gymnasium.spaces.Space.dtype"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="pre">property</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">is_np_flattenable</span></span><emclass="property"><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="pre">bool</span></em><aclass="headerlink"href="#gymnasium.spaces.Space.is_np_flattenable"title="Link to this definition">¶</a></dt>
<dd><p>Checks whether this space can be flattened to a <aclass="reference internal"href="fundamental/#gymnasium.spaces.Box"title="gymnasium.spaces.Box"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">gymnasium.spaces.Box</span></code></a>.</p>
<emclass="property"><spanclass="pre">property</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">np_random</span></span><emclass="property"><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="pre">Generator</span></em><aclass="headerlink"href="#gymnasium.spaces.Space.np_random"title="Link to this definition">¶</a></dt>
<dd><p>Lazily seed the PRNG since this is expensive and only needed if sampling from this space.</p>
<p>As <aclass="reference internal"href="#gymnasium.spaces.Space.seed"title="gymnasium.spaces.Space.seed"><codeclass="xref py py-meth docutils literal notranslate"><spanclass="pre">seed()</span></code></a> is not guaranteed to set the <cite>_np_random</cite> for particular seeds. We add a
check after <aclass="reference internal"href="#gymnasium.spaces.Space.seed"title="gymnasium.spaces.Space.seed"><codeclass="xref py py-meth docutils literal notranslate"><spanclass="pre">seed()</span></code></a> to set a new random number generator.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">sample</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">mask</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">probability</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">T_cov</span></span></span><aclass="reference internal"href="../../_modules/gymnasium/spaces/space/#Space.sample"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#gymnasium.spaces.Space.sample"title="Link to this definition">¶</a></dt>
<li><p><strong>mask</strong>– A mask used for random sampling, expected <codeclass="docutils literal notranslate"><spanclass="pre">dtype=np.int8</span></code> and see sample implementation for expected shape.</p></li>
<li><p><strong>probability</strong>– A probability mask used for sampling according to the given probability distribution, expected <codeclass="docutils literal notranslate"><spanclass="pre">dtype=np.float64</span></code> and see sample implementation for expected shape.</p></li>
<spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">contains</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">x</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">bool</span></span></span><aclass="reference internal"href="../../_modules/gymnasium/spaces/space/#Space.contains"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#gymnasium.spaces.Space.contains"title="Link to this definition">¶</a></dt>
<dd><p>Return boolean specifying if x is a valid member of this space, equivalent to <codeclass="docutils literal notranslate"><spanclass="pre">sample</span><spanclass="pre">in</span><spanclass="pre">space</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">seed</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">seed</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">int</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">int</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">list</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">dict</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">str</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../../_modules/gymnasium/spaces/space/#Space.seed"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#gymnasium.spaces.Space.seed"title="Link to this definition">¶</a></dt>
<dd><p>Seed the pseudorandom number generator (PRNG) of this space and, if applicable, the PRNGs of subspaces.</p>
<ddclass="field-odd"><p><strong>seed</strong>– The seed value for the space. This is expanded for composite spaces to accept multiple values. For further details, please refer to the space’s documentation.</p>
<ddclass="field-even"><p><strong>The seed values used for all the PRNGs, for composite spaces this can be a tuple or dictionary of values.</strong></p>
<spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">to_jsonable</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">sample_n</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Sequence</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">T_cov</span><spanclass="p"><spanclass="pre">]</span></span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">list</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../../_modules/gymnasium/spaces/space/#Space.to_jsonable"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#gymnasium.spaces.Space.to_jsonable"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">Space.</span></span><spanclass="sig-name descname"><spanclass="pre">from_jsonable</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">sample_n</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">list</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">list</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">T_cov</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../../_modules/gymnasium/spaces/space/#Space.from_jsonable"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#gymnasium.spaces.Space.from_jsonable"title="Link to this definition">¶</a></dt>
<li><p><aclass="reference internal"href="fundamental/#gymnasium.spaces.Box"title="gymnasium.spaces.Box"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Box</span></code></a> - Supports continuous (and discrete) vectors or matrices, used for vector observations, images, etc</p></li>
<li><p><aclass="reference internal"href="fundamental/#gymnasium.spaces.Discrete"title="gymnasium.spaces.Discrete"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Discrete</span></code></a> - Supports a single discrete number of values with an optional start for the values</p></li>
<li><p><aclass="reference internal"href="fundamental/#gymnasium.spaces.MultiBinary"title="gymnasium.spaces.MultiBinary"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">MultiBinary</span></code></a> - Supports single or matrices of binary values, used for holding down a button or if an agent has an object</p></li>
<li><p><aclass="reference internal"href="fundamental/#gymnasium.spaces.MultiDiscrete"title="gymnasium.spaces.MultiDiscrete"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">MultiDiscrete</span></code></a> - Supports multiple discrete values with multiple axes, used for controller actions</p></li>
<li><p><aclass="reference internal"href="composite/#gymnasium.spaces.Dict"title="gymnasium.spaces.Dict"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Dict</span></code></a> - Supports a dictionary of keys and subspaces, used for a fixed number of unordered spaces</p></li>
<li><p><aclass="reference internal"href="composite/#gymnasium.spaces.Tuple"title="gymnasium.spaces.Tuple"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Tuple</span></code></a> - Supports a tuple of subspaces, used for multiple for a fixed number of ordered spaces</p></li>
<li><p><aclass="reference internal"href="composite/#gymnasium.spaces.Sequence"title="gymnasium.spaces.Sequence"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Sequence</span></code></a> - Supports a variable number of instances of a single subspace, used for entities spaces or selecting a variable number of actions</p></li>
<li><p><aclass="reference internal"href="composite/#gymnasium.spaces.Graph"title="gymnasium.spaces.Graph"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Graph</span></code></a> - Supports graph based actions or observations with discrete or continuous nodes and edge values</p></li>
<li><p><aclass="reference internal"href="composite/#gymnasium.spaces.OneOf"title="gymnasium.spaces.OneOf"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">OneOf</span></code></a> - Supports optional action spaces such that an action can be one of N possible subspaces</p></li>
<li><p><aclass="reference internal"href="utils/#gymnasium.spaces.utils.flatdim"title="gymnasium.spaces.utils.flatdim"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">utils.flatdim</span></code></a> - The number of dimensions the flattened space will contain</p></li>
<li><p><aclass="reference internal"href="utils/#gymnasium.spaces.utils.flatten_space"title="gymnasium.spaces.utils.flatten_space"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">utils.flatten_space</span></code></a> - Flattens a space for which the <codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">utils.flattened</span></code> space instances will contain</p></li>
<li><p><aclass="reference internal"href="utils/#gymnasium.spaces.utils.flatten"title="gymnasium.spaces.utils.flatten"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">utils.flatten</span></code></a> - Flattens an instance of a space that is contained within the flattened version of the space</p></li>
<li><p><aclass="reference internal"href="../vector/utils/#gymnasium.vector.utils.batch_space"title="gymnasium.vector.utils.batch_space"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">vector.utils.batch_space</span></code></a> - Transforms a space into the equivalent space for <codeclass="docutils literal notranslate"><spanclass="pre">n</span></code> users</p></li>
<li><p><aclass="reference internal"href="../vector/utils/#gymnasium.vector.utils.concatenate"title="gymnasium.vector.utils.concatenate"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">vector.utils.concatenate</span></code></a> - Concatenates a space’s samples into a pre-generated space</p></li>
<li><p><aclass="reference internal"href="../vector/utils/#gymnasium.vector.utils.iterate"title="gymnasium.vector.utils.iterate"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">vector.utils.iterate</span></code></a> - Iterate over the batched space’s samples</p></li>
<li><p><aclass="reference internal"href="../vector/utils/#gymnasium.vector.utils.create_empty_array"title="gymnasium.vector.utils.create_empty_array"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">vector.utils.create_empty_array</span></code></a> - Creates an empty sample for an space (generally used with <codeclass="docutils literal notranslate"><spanclass="pre">concatenate</span></code>)</p></li>
<li><p><aclass="reference internal"href="../vector/utils/#gymnasium.vector.utils.create_shared_memory"title="gymnasium.vector.utils.create_shared_memory"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">vector.utils.create_shared_memory</span></code></a> - Creates a shared memory for asynchronous (multiprocessing) environment</p></li>
<li><p><aclass="reference internal"href="../vector/utils/#gymnasium.vector.utils.read_from_shared_memory"title="gymnasium.vector.utils.read_from_shared_memory"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">vector.utils.read_from_shared_memory</span></code></a> - Reads a shared memory for asynchronous (multiprocessing) environment</p></li>
<li><p><aclass="reference internal"href="../vector/utils/#gymnasium.vector.utils.write_to_shared_memory"title="gymnasium.vector.utils.write_to_shared_memory"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">vector.utils.write_to_shared_memory</span></code></a> - Write to a shared memory for asynchronous (multiprocessing) environment</p></li>