[SciPy-dev] scipy.stats._chk_asarray

Charles R Harris charlesr.harris@gmail....
Tue Jun 2 22:40:41 CDT 2009


On Tue, Jun 2, 2009 at 9:09 PM, <josef.pktd@gmail.com> wrote:

> On Tue, Jun 2, 2009 at 5:58 PM, Robert Kern <robert.kern@gmail.com> wrote:
> > On Tue, Jun 2, 2009 at 16:20, ctw <lists.20.chth@xoxy.net> wrote:
> >>> Please revert that.
> >>
> >> Done! Sorry about that. I am having some issues with the current
> >> behavior of changing all inputs to ndarrays. Would it be possible to
> >> add a nanmean function to numpy that behaves just as np.nansum in the
> >> sense that it preserves the type of the input?
> >
> > I would prefer a comprehensive approach rather than hacking in the one
> > function you want. I wouldn't be opposed to more NaN-aware functions
> > in numpy if they were corralled into their own module. However, that
> > leaves all of the rest of scipy.stats untouched.
> >
> > Alternately, you could help write a decorator that would wrap a
> > function to cast its arguments to ndarrays (bonus points: any
> > specified subclass) and then cast the result(s) back to the
> > appropriate subclass determined by the inputs' classes according to
> > the ufunc rules. You just have to be careful to deal with functions
> > that take multiple arraylike and non-arraylike inputs and return
> > multiple outputs (some of which aren't arraylike, either). This would
> > take some care, but would be a great asset to numpy.
> >
>
> I tried to see if I can introduce a second version _check_asanyarray,
> that doesn't convert to basic np.array, but I didn't get very far.
> nanmedian, and nanstd are not easy to convert to work with matrices,
> nanstd uses multiplication and nanmedian uses np.compress
>
> I usually avoid matrices because it is too confusing in numpy to keep
> track of the type for the basic operations.
>
> As an alternative, I looked at np.core.fromnumeric._wrapit, which is
> the wrapper for np.mean
>
> Doing a variation on it seems to work for matrices, see below. I
> haven't tried it on other array types. This is just a trial balloon to
> see whether this would make sense for some of the stats functions. It
> would be relevant mostly for the descriptive statistics, the
> statistical tests just return test statistics and pvalues, the plan
> for models is that they get explicit array subclass handling.
>
> Is this a good idea to try to work this way?
> And what is the best way to check whether an array is a plain ndarray
> and not a subclass instance?
> something like this ?
> >>> isinstance(np.matrix(range(4)),np.ndarray)
> True
> >>> np.matrix(range(4)).__class__ is np.ndarray
> False
> >>> np.arange(5).__class__ is np.ndarray
> True
>

The linear algebra routines do a lot of that _wrapit stuff so that they can
handle both ndarrays and matrices. They might be useful examples.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-dev/attachments/20090602/6029aa01/attachment-0001.html 


More information about the Scipy-dev mailing list