Source code for modelly.scenarios.sampling
"""Sampling helpers for building experiment designs."""
from __future__ import annotations
import numpy as np
[docs]
def rescale_samples(
samples: np.ndarray,
ranges: np.ndarray,
*,
inplace: bool = False,
) -> np.ndarray:
"""Rescale samples from the unit interval [0, 1] to parameter ranges.
Args:
samples: Array of shape (n, d) drawn from the unit interval.
ranges: Array of shape (d, 2) giving ``[[min, max], ...]`` per parameter.
inplace: If True, ``samples`` is overwritten with the result; if False
(default), a new array is returned.
Returns:
The rescaled samples, shape (n, d).
"""
samples = np.asarray(samples)
ranges = np.asarray(ranges)
mins = ranges[:, 0]
scale = ranges[:, 1] - mins
if inplace:
samples *= scale
samples += mins
return samples
return samples * scale + mins