diff options
author | Marten van Kerkwijk <mhvk@astro.utoronto.ca> | 2017-04-10 15:00:00 -0400 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2017-04-27 13:37:50 -0600 |
commit | 1fc6e633e39cd837cd296104022558b2b880ab29 (patch) | |
tree | 6b0325ff0a829852dfbecd9f1f632214087cf6bc /numpy/doc/subclassing.py | |
parent | ff628f1697538ba03c9fc02409b96896fa56e9f6 (diff) | |
download | numpy-1fc6e633e39cd837cd296104022558b2b880ab29.tar.gz |
DOC,TST: clarify example of ndarray subclass using __array_ufunc__
Also add a few more tests of the same example for good measure.
Diffstat (limited to 'numpy/doc/subclassing.py')
-rw-r--r-- | numpy/doc/subclassing.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/numpy/doc/subclassing.py b/numpy/doc/subclassing.py index 7877432b5..410fc58bd 100644 --- a/numpy/doc/subclassing.py +++ b/numpy/doc/subclassing.py @@ -465,7 +465,7 @@ following. outputs = kwargs.pop('out', None) out_no = [] - if outputs is not None: + if outputs: out_args = [] for j, output in enumerate(outputs): if isinstance(output, A): @@ -474,6 +474,8 @@ following. else: out_args.append(output) kwargs['out'] = tuple(out_args) + else: + outputs = (None,) * ufunc.nout info = {} if in_no: @@ -486,14 +488,11 @@ following. if results is NotImplemented: return NotImplemented - if not isinstance(results, tuple): - if not isinstance(results, np.ndarray): - return results + if ufunc.nout == 1: results = (results,) - if outputs is None: - outputs = [None] * len(results) - results = tuple(result.view(A) if output is None else output + results = tuple((np.asarray(result).view(A) + if output is None else output) for result, output in zip(results, outputs)) if isinstance(results[0], A): results[0].info = info |