dtoolkit.transformer.methodtf_factory#

dtoolkit.transformer.methodtf_factory(transform_method: Callable, inverse_transform_method: Callable = None) MethodTF[source]#

Quickly generate transformer from methods.

Parameters:
transform_methodCallable

The back algorithm of the transform().

inverse_transform_methodCallable or None

The back algorithm of the inverse_transform().

Examples

In your library code:

from __future__ import annotations

import numpy as np

from dtoolkit.transformer.factory import methodtf_factory

# Generate a plus/minus constant transformer:

def plus_constant(X: np.ndarray, constant: int | float) -> np.ndarray:
    '''Plus constant to each element of ``X``'''

    return X + constant

def minus_constant(X: np.ndarray, constant: int | float) -> np.ndarray:
    '''Minus constant to each element of ``X``'''

    return X - constant

PlusTF = methodtf_factory(plus_constant, minus_constant)

Back in an interactive IPython session, use this transformer:

In [1]: import numpy as np

In [2]: a = np.array([1, 2, 3])

In [3]: tf = PlusTF(1).update_invargs(1)

In [4]: tf.transform(a)
Out[4]:
[2 3 4]

In [5]: tf.inverse_transform(a)
Out[5]:
[0 1 2]