diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2014-02-08 19:04:12 -0700 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2014-02-10 11:07:17 -0700 |
commit | 4ebf25e1e3b3b0c8619cce395a96d0dffa9e4e8a (patch) | |
tree | e529a52adcf0b873ec16a16339977d30052eda0c /numpy/core/_methods.py | |
parent | b7850701a31127cad8c7399cea6be9cd5f71bec5 (diff) | |
download | numpy-4ebf25e1e3b3b0c8619cce395a96d0dffa9e4e8a.tar.gz |
BUG: Fix mean, var, std methods for object arrays.
This takes care to preserve the object type for scalar returns and
fixes the error that resulted when the scalar did not have a dtype
attribute.
Closes #4063.
Diffstat (limited to 'numpy/core/_methods.py')
-rw-r--r-- | numpy/core/_methods.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/numpy/core/_methods.py b/numpy/core/_methods.py index a064f70c7..5f58940fd 100644 --- a/numpy/core/_methods.py +++ b/numpy/core/_methods.py @@ -63,8 +63,10 @@ def _mean(a, axis=None, dtype=None, out=None, keepdims=False): if isinstance(ret, mu.ndarray): ret = um.true_divide( ret, rcount, out=ret, casting='unsafe', subok=False) - else: + elif hasattr(ret, 'dtype'): ret = ret.dtype.type(ret / rcount) + else: + ret = ret / rcount return ret @@ -107,8 +109,10 @@ def _var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False): if isinstance(ret, mu.ndarray): ret = um.true_divide( ret, rcount, out=ret, casting='unsafe', subok=False) - else: + elif hasattr(ret, 'dtype'): ret = ret.dtype.type(ret / rcount) + else: + ret = ret / rcount return ret @@ -118,7 +122,9 @@ def _std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False): if isinstance(ret, mu.ndarray): ret = um.sqrt(ret, out=ret) - else: + elif hasattr(ret, 'dtype'): ret = ret.dtype.type(um.sqrt(ret)) + else: + ret = um.sqrt(ret) return ret |