writable_array¶
- odl.util.utility.writable_array(obj, **kwargs)[source]¶
Context manager that casts obj to a
numpy.array
and saves changes.- Parameters:
- obj
array-like
Object that should be made available as writable array. It must be valid as input to
numpy.asarray
and needs to support the syntaxobj[:] = arr
.- kwargs
Keyword arguments that should be passed to
numpy.asarray
.
- obj
Examples
Convert list to array and use with numpy:
>>> lst = [1, 2, 3] >>> with writable_array(lst) as arr: ... arr *= 2 >>> lst [2, 4, 6]
Usage with ODL vectors:
>>> space = odl.uniform_discr(0, 1, 3) >>> x = space.element([1, 2, 3]) >>> with writable_array(x) as arr: ... arr += [1, 1, 1] >>> x uniform_discr(0.0, 1.0, 3).element([ 2., 3., 4.])
Additional keyword arguments are passed to
numpy.asarray
:>>> lst = [1, 2, 3] >>> with writable_array(lst, dtype='complex') as arr: ... print(arr) [ 1.+0.j 2.+0.j 3.+0.j]
Note that the changes are only saved upon exiting the context manger exits. Before, the input object is unchanged:
>>> lst = [1, 2, 3] >>> with writable_array(lst) as arr: ... arr *= 2 ... print(lst) [1, 2, 3] >>> print(lst) [2, 4, 6]