summaryrefslogtreecommitdiff
path: root/numpy/core/_methods.py
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2014-02-08 19:04:12 -0700
committerCharles Harris <charlesr.harris@gmail.com>2014-02-10 11:07:17 -0700
commit4ebf25e1e3b3b0c8619cce395a96d0dffa9e4e8a (patch)
treee529a52adcf0b873ec16a16339977d30052eda0c /numpy/core/_methods.py
parentb7850701a31127cad8c7399cea6be9cd5f71bec5 (diff)
downloadnumpy-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.py12
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