Skip to main content
`Ctrl`+`K`

# scipy.stats.qmc.scale

scipy.stats.qmc.scale(sample, l_bounds, u_bounds, *, reverse=False)

  Sample scaling from unit hypercube to different bounds.

  To convert a sample from \([0, 1)\) to \([a, b), b>a\), with \(a\) the lower bounds and \(b\) the upper bounds. The following transformation is used:

  \[(b - a) \cdot \text{sample} + a\]
  Parameters:
    sample array_like (n, d)

      Sample to scale.

    l_bounds, u_bounds array_like (d,)

      Lower and upper bounds (resp. \(a\), \(b\)) of transformed data. If reverse is True, range of the original data to transform to the unit hypercube.

    reverse bool, optional

      Reverse the transformation from different bounds to the unit hypercube. Default is False.

  Returns:
    sample array_like (n, d)

      Scaled sample.

  Examples

  Transform 3 samples in the unit hypercube to bounds:

      >>> from scipy.stats import qmc
      >>> l_bounds = [-2, 0]
      >>> u_bounds = [6, 5]
      >>> sample = [[0.5 , 0.75],
      ...           [0.5 , 0.5],
      ...           [0.75, 0.25]]
      >>> sample_scaled = qmc.scale(sample, l_bounds, u_bounds)
      >>> sample_scaled
      array([[2.  , 3.75],
             [2.  , 2.5 ],
             [4.  , 1.25]])

  And convert back to the unit hypercube:

      >>> sample_ = qmc.scale(sample_scaled, l_bounds, u_bounds, reverse=True)
      >>> sample_
      array([[0.5 , 0.75],
             [0.5 , 0.5 ],
             [0.75, 0.25]])