On Thu, Jul 18, 2013 at 10:49 PM, Yaroslav Halchenko <lists@onerussian.com> wrote:
Hi everyone,

Some of my elderly code stopped working upon upgrades of numpy and
upcoming pandas: https://github.com/pydata/pandas/issues/4290 so I have
looked at the code of

  2481   def mean(a, axis=None, dtype=None, out=None, keepdims=False):
  2482       """
  ...
  2489       Parameters
  2490       ----------
  2491       a : array_like
  2492           Array containing numbers whose mean is desired. If `a` is not an
  2493           array, a conversion is attempted.
  ...
  2555       """
  2556       if type(a) is not mu.ndarray:
  2557           try:
  2558               mean = a.mean
  2559               return mean(axis=axis, dtype=dtype, out=out)
  2560           except AttributeError:
  2561               pass
  2562
  2563       return _methods._mean(a, axis=axis, dtype=dtype,
  2564                               out=out, keepdims=keepdims)

here 'array_like'ness is checked by a having mean function.  Then it is assumed
that it has the same definition as ndarray, including dtype keyword argument.

Not sure anyways if my direct numpy.mean application to pandas DataFrame is
"kosher" -- initially I just assumed that any argument is asanyarray'ed first
-- but I think here catching TypeError for those incompatible .mean's would not
hurt either.  What do you think?  Similar logic applies to mean cousins (var,
std, ...?) decorated around _methods implementations.

Related? From a while ago.

https://github.com/numpy/numpy/pull/160

Skipper