<liclass="toctree-l1 current has-children"><aclass="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 child pages in navigation</div><iclass="icon"><svg><usehref="#svg-arrow-right"></use></svg></i></label><ulclass="current">
<liclass="toctree-l2 current current-page"><aclass="current reference internal"href="#">Fundamental Spaces</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="../../../environments/classic_control/mountain_car_continuous/">Mountain Car Continuous</a></li>
<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">Box</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">low:</span><spanclass="pre">~typing.Union[~typing.SupportsFloat,</span><spanclass="pre">~numpy.ndarray],</span><spanclass="pre">high:</span><spanclass="pre">~typing.Union[~typing.SupportsFloat,</span><spanclass="pre">~numpy.ndarray],</span><spanclass="pre">shape:</span><spanclass="pre">~typing.Optional[~typing.Sequence[int]]</span><spanclass="pre">=</span><spanclass="pre">None,</span><spanclass="pre">dtype:</span><spanclass="pre">~typing.Type</span><spanclass="pre">=</span><spanclass="pre"><class</span><spanclass="pre">'numpy.float32'>,</span><spanclass="pre">seed:</span><spanclass="pre">~typing.Optional[~typing.Union[int,</span><spanclass="pre">~numpy.random._generator.Generator]]</span><spanclass="pre">=</span><spanclass="pre">None</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#gymnasium.spaces.Box"title="Permalink to this definition">#</a></dt>
<dd><p>A (possibly unbounded) box in <spanclass="math notranslate nohighlight">\(\mathbb{R}^n\)</span>.</p>
<p>Specifically, a Box represents the Cartesian product of n closed intervals.
Each interval has the form of one of <spanclass="math notranslate nohighlight">\([a, b]\)</span>, <spanclass="math notranslate nohighlight">\((-\infty, b]\)</span>,
<spanclass="math notranslate nohighlight">\([a, \infty)\)</span>, or <spanclass="math notranslate nohighlight">\((-\infty, \infty)\)</span>.</p>
<p>Constructor of <aclass="reference internal"href="#gymnasium.spaces.Box"title="gymnasium.spaces.Box"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Box</span></code></a>.</p>
<p>The argument <codeclass="docutils literal notranslate"><spanclass="pre">low</span></code> specifies the lower bound of each dimension and <codeclass="docutils literal notranslate"><spanclass="pre">high</span></code> specifies the upper bounds.
I.e., the space that is constructed will be the product of the intervals <spanclass="math notranslate nohighlight">\([\text{low}[i], \text{high}[i]]\)</span>.</p>
<p>If <codeclass="docutils literal notranslate"><spanclass="pre">low</span></code> (or <codeclass="docutils literal notranslate"><spanclass="pre">high</span></code>) is a scalar, the lower bound (or upper bound, respectively) will be assumed to be
<li><p><strong>low</strong> (<em>Union</em><em>[</em><em>SupportsFloat</em><em>, </em><em>np.ndarray</em><em>]</em>) – Lower bounds of the intervals.</p></li>
<li><p><strong>high</strong> (<em>Union</em><em>[</em><em>SupportsFloat</em><em>, </em><em>np.ndarray</em><em>]</em>) – Upper bounds of the intervals.</p></li>
<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>) – The shape is inferred from the shape of <cite>low</cite> or <cite>high</cite><cite>np.ndarray`s with
`low</cite> and <cite>high</cite> scalars defaulting to a shape of (1,)</p></li>
<li><p><strong>dtype</strong>– The dtype of the elements of the space. If this is an integer type, the <aclass="reference internal"href="#gymnasium.spaces.Box"title="gymnasium.spaces.Box"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Box</span></code></a> is essentially a discrete space.</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>
<spanclass="sig-name descname"><spanclass="pre">is_bounded</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">manner</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">'both'</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="headerlink"href="#gymnasium.spaces.Box.is_bounded"title="Permalink to this definition">#</a></dt>
<dd><p>Checks whether the box is bounded in some sense.</p>
<ddclass="field-odd"><p><strong>ValueError</strong>– If <cite>manner</cite> is neither <codeclass="docutils literal notranslate"><spanclass="pre">"both"</span></code> nor <codeclass="docutils literal notranslate"><spanclass="pre">"below"</span></code> or <codeclass="docutils literal notranslate"><spanclass="pre">"above"</span></code></p>
<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">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">ndarray</span></span></span><aclass="headerlink"href="#gymnasium.spaces.Box.sample"title="Permalink to this definition">#</a></dt>
<dd><p>Generates a single random sample inside the Box.</p>
<p>In creating a sample of the box, each coordinate is sampled (independently) from a distribution
that is chosen according to the form of the interval:</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">Discrete</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">n</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">int</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">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Union</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Generator</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></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">start</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">0</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#gymnasium.spaces.Discrete"title="Permalink to this definition">#</a></dt>
<dd><p>A space consisting of finitely many elements.</p>
<p>This class represents a finite subset of integers, more specifically a set of the form <spanclass="math notranslate nohighlight">\(\{ a, a+1, \dots, a+n-1 \}\)</span>.</p>
<li><p><strong>n</strong> (<em>int</em>) – The number of elements of this space.</p></li>
<li><p><strong>seed</strong>– Optionally, you can use this argument to seed the RNG that is used to sample from the <codeclass="docutils literal notranslate"><spanclass="pre">Dict</span></code> space.</p></li>
<li><p><strong>start</strong> (<em>int</em>) – The smallest element of this space.</p></li>
<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">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">ndarray</span><spanclass="p"><spanclass="pre">]</span></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></span></span><aclass="headerlink"href="#gymnasium.spaces.Discrete.sample"title="Permalink to this definition">#</a></dt>
<dd><p>Generates a single random sample from this space.</p>
<p>A sample will be chosen uniformly at random with the mask if provided</p>
<ddclass="field-odd"><p><strong>mask</strong>– An optional mask for if an action can be selected.
Expected <cite>np.ndarray</cite> of shape <cite>(n,)</cite> and dtype <cite>np.int8</cite> where <cite>1</cite> represents valid actions and <cite>0</cite> invalid / infeasible actions.
If there are no possible actions (i.e. <cite>np.all(mask == 0)</cite>) then <cite>space.start</cite> will be returned.</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">MultiBinary</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">n</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Union</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">ndarray</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Sequence</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">]</span></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">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Union</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Generator</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></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="headerlink"href="#gymnasium.spaces.MultiBinary"title="Permalink to this definition">#</a></dt>
<dd><p>An n-shape binary space.</p>
<p>Elements of this space are binary arrays of a shape that is fixed during construction.</p>
<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">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">ndarray</span><spanclass="p"><spanclass="pre">]</span></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">ndarray</span></span></span><aclass="headerlink"href="#gymnasium.spaces.MultiBinary.sample"title="Permalink to this definition">#</a></dt>
<dd><p>Generates a single random sample from this space.</p>
<p>A sample is drawn by independent, fair coin tosses (one toss per binary variable of the space).</p>
<ddclass="field-odd"><p><strong>mask</strong>– An optional np.ndarray to mask samples with expected shape of <codeclass="docutils literal notranslate"><spanclass="pre">space.shape</span></code>.
For mask == 0 then the samples will be 0 and mask == 1 then random samples will be generated.
The expected mask shape is the space shape and mask dtype is <cite>np.int8</cite>.</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">MultiDiscrete</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">nvec:</span><spanclass="pre">~typing.Union[~numpy.ndarray,</span><spanclass="pre">list],</span><spanclass="pre">dtype=<class</span><spanclass="pre">'numpy.int64'>,</span><spanclass="pre">seed:</span><spanclass="pre">~typing.Optional[~typing.Union[int,</span><spanclass="pre">~numpy.random._generator.Generator]]</span><spanclass="pre">=</span><spanclass="pre">None</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#gymnasium.spaces.MultiDiscrete"title="Permalink to this definition">#</a></dt>
<dd><p>This represents the cartesian product of arbitrary <aclass="reference internal"href="#gymnasium.spaces.Discrete"title="gymnasium.spaces.Discrete"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Discrete</span></code></a> spaces.</p>
<p>It is useful to represent game controllers or keyboards where each key can be represented as a discrete action space.</p>
<divclass="admonition note">
<pclass="admonition-title">Note</p>
<p>Some environment wrappers assume a value of 0 always represents the NOOP action.</p>
</div>
<p>e.g. Nintendo Game Controller - Can be conceptualized as 3 discrete action spaces:</p>
<p>It can be initialized as <codeclass="docutils literal notranslate"><spanclass="pre">MultiDiscrete([</span><spanclass="pre">5,</span><spanclass="pre">2,</span><spanclass="pre">2</span><spanclass="pre">])</span></code> such that a sample might be <codeclass="docutils literal notranslate"><spanclass="pre">array([3,</span><spanclass="pre">1,</span><spanclass="pre">0])</span></code>.</p>
<p>Although this feature is rarely used, <aclass="reference internal"href="#gymnasium.spaces.MultiDiscrete"title="gymnasium.spaces.MultiDiscrete"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">MultiDiscrete</span></code></a> spaces may also have several axes
if <codeclass="docutils literal notranslate"><spanclass="pre">nvec</span></code> has several axes:</p>
<p>Constructor of <aclass="reference internal"href="#gymnasium.spaces.MultiDiscrete"title="gymnasium.spaces.MultiDiscrete"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">MultiDiscrete</span></code></a> space.</p>
<p>The argument <codeclass="docutils literal notranslate"><spanclass="pre">nvec</span></code> will determine the number of values each categorical variable can take.</p>
<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">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">tuple</span><spanclass="p"><spanclass="pre">]</span></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">ndarray</span></span></span><aclass="headerlink"href="#gymnasium.spaces.MultiDiscrete.sample"title="Permalink to this definition">#</a></dt>
<dd><p>Generates a single random sample this space.</p>
<ddclass="field-odd"><p><strong>mask</strong>– An optional mask for multi-discrete, expects tuples with a <cite>np.ndarray</cite> mask in the position of each
action with shape <cite>(n,)</cite> where <cite>n</cite> is the number of actions and <cite>dtype=np.int8</cite>.
Only mask values == 1 are possible to sample unless all mask values for an action are 0 then the default action 0 is sampled.</p>
<li><p><strong>min_length</strong> (<em>int</em>) – Minimum text length (in characters). Defaults to 1 to prevent empty strings.</p></li>
<li><p><strong>max_length</strong> (<em>int</em>) – Maximum text length (in characters).</p></li>
<li><p><strong>charset</strong> (<em>Union</em><em>[</em><em>set</em><em>]</em><em>, </em><em>str</em>) – Character set, defaults to the lower and upper english alphabet plus latin digits.</p></li>
<li><p><strong>seed</strong>– The seed for sampling from the space.</p></li>
<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">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Tuple</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Optional</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">ndarray</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></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">str</span></span></span><aclass="headerlink"href="#gymnasium.spaces.Text.sample"title="Permalink to this definition">#</a></dt>
<dd><p>Generates a single random sample from this space with by default a random length between <cite>min_length</cite> and <cite>max_length</cite> and sampled from the <cite>charset</cite>.</p>
<ddclass="field-odd"><p><strong>mask</strong>– An optional tuples of length and mask for the text.
The length is expected to be between the <cite>min_length</cite> and <cite>max_length</cite> otherwise a random integer between <cite>min_length</cite> and <cite>max_length</cite> is selected.
For the mask, we expect a numpy array of length of the charset passed with <cite>dtype == np.int8</cite>.
If the charlist mask is all zero then an empty string is returned no matter the <cite>min_length</cite></p>