Skip to content

replace

Replace

Bases: OneToOneTransformer

Transform series by replacing a range of values by another value.

Parameters:

Name Type Description Default
values_range(List[List[float]])

Range of values one wants to replace.

required
value(float)

Replacement value.

required
Source code in eki_mmo_equations/one_to_one_transformations/replace.py
class Replace(OneToOneTransformer):
    """Transform series by replacing a range of values by another value.

    Args:
        values_range(List[List[float]]): Range of values one wants to replace.
        value(float): Replacement value.
    """

    def __init__(self, values_range: List[List[float]], value: float) -> None:
        self.values_range = values_range
        self.value = value

    @property
    def parameters(self) -> Dict[str, Any]:
        return self.__dict__

    # ------- METHODS -------

    def transform(self, serie: np.ndarray, copy=False) -> np.ndarray:
        serie = super().transform(serie, copy)

        return self._transformer(serie, self.values_range, self.value)

    def fit(self, serie: np.ndarray, y=None):
        """Fit transformation on serie

        Args:
            serie (np.ndarray): data to fit on.
        """
        return super().fit(serie, y)

    # ------- TRANSFORMERS -------

    @staticmethod
    def _transformer(serie: np.ndarray, values_range, value) -> np.ndarray:
        for range in values_range:
            serie[(serie >= range[0]) & (serie <= range[1])] = value
        return np.nan_to_num(serie)

    # ------- CHECKERS -------

    def check_params(self, serie: np.ndarray):
        """Check if parameters respect their application scope."""
        for range in self.values_range:
            if not (isinstance(range, list) and len(range) == 2):
                raise ParameterScopeException("The values_range argument should be of the form [[0,10], [100,200]]")

check_params(serie)

Check if parameters respect their application scope.

Source code in eki_mmo_equations/one_to_one_transformations/replace.py
def check_params(self, serie: np.ndarray):
    """Check if parameters respect their application scope."""
    for range in self.values_range:
        if not (isinstance(range, list) and len(range) == 2):
            raise ParameterScopeException("The values_range argument should be of the form [[0,10], [100,200]]")

fit(serie, y=None)

Fit transformation on serie

Parameters:

Name Type Description Default
serie np.ndarray

data to fit on.

required
Source code in eki_mmo_equations/one_to_one_transformations/replace.py
def fit(self, serie: np.ndarray, y=None):
    """Fit transformation on serie

    Args:
        serie (np.ndarray): data to fit on.
    """
    return super().fit(serie, y)