def compose_functions(cls,
x,
number_of_compositions=1,
functions=(np.sin, np.exp, np.square, np.polyval,
np.tan, ),
clip_big_values=True,
clip_value=1e6):
"""Compose functions from an iterable of functions.
This is a helper function to cover a more real life scenario of
plottings.
Arguments:
x (numpy.array): array for which composed values will be computed.
number_of_compositions (int): number of compositions of functions.
functions (tuple): an iterable of functions.
clip_big_values (bool): whether or not to limit function extremes.
clip_value (float): limit values for function composition.
Returns:
y (numpy.array): array of composed functions
"""
i = 0
y = x
while i < number_of_compositions:
func = np.random.choice(functions)
if func == np.polyval:
n_coefs = np.random.randint(0, 10)
coefs = np.random.randint(-50, 50, size=n_coefs)
y = func(coefs, x)
else:
y = func(y)
if clip_big_values:
y = np.clip(y, -clip_value, clip_value)
i += 1
return y
# Goes with 'fast' parameters by default.
评论列表
文章目录