Passing multiple output arguments to ufunc

There is an oldish feature request in github (https://github.com/numpy/numpy/issues/4752), complaining about it not being possible to pass multiple output arguments to a ufunc using keyword arguments. You can pass them all as positional arguments:
out1 = np.empty(1) out2 = np.empty(1) np.modf([1.333], out1, out2) (array([ 0.333]), array([ 1.]))
You can also pass the first as a kwarg if you leave the others unspecified:
np.modf([1.333], out=out1) (array([ 0.333]), array([ 1.]))
You can also use None in a positional argument to leave some of the output arguments unspecified:
np.modf([1.3333], None, out2) (array([ 0.3333]), array([ 1.]))
But you cannot do something like
np.modf([1.333], out=(out1, out2)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: return arrays must be of ArrayType
Would this behavior make sense? The idea would be to allow a tuple as a valid input for the 'out=' kwarg. It would have to have a length exactly matching the number of output arguments, and its items would have to be either arrays or None. For backwards compatibility we probably should still allow a single array to mean the first output argument, even if the ufunc has multiple outputs. Any other thoughts? Jaime -- (\__/) ( O.o) ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes de dominación mundial.
participants (1)
-
Jaime Fernández del Río