vectorize

class odl.util.vectorization.vectorize(*args, **kwargs)[source]

Bases: odl.util.vectorization.OptionalArgDecorator

Decorator class for function vectorization.

This vectorizer expects a function with exactly one positional argument (input) and optional keyword arguments. The decorated function has an optional out parameter for in-place evaluation.

Examples

Use the decorator witout arguments:

>>> @vectorize
... def f(x):
...     return x[0] + x[1] if x[0] < x[1] else x[0] - x[1]
>>>
>>> f([0, 1])  # np.vectorize'd functions always return an array
array(1)
>>> f([[0, -2], [1, 4]])  # corresponds to points [0, 1], [-2, 4]
array([1, 2])

The function may have kwargs:

>>> @vectorize
... def f(x, param=1.0):
...     return x[0] + x[1] if x[0] < param else x[0] - x[1]
>>>
>>> f([[0, -2], [1, 4]])
array([1, 2])
>>> f([[0, -2], [1, 4]], param=-1.0)
array([-1,  2])

You can pass arguments to the vectorizer, too:

>>> @vectorize(otypes=['float32'])
... def f(x):
...     return x[0] + x[1] if x[0] < x[1] else x[0] - x[1]
>>> f([[0, -2], [1, 4]])
array([ 1.,  2.], dtype=float32)
__init__(self, /, \*args, \*\*kwargs)

Initialize self. See help(type(self)) for accurate signature.