On Mon, Nov 8, 2010 at 2:52 PM, Skipper Seabold <[email protected]> wrote:

> On Mon, Nov 8, 2010 at 3:45 PM, Warren Weckesser
> <[email protected]> wrote:
> >
> >
> > On Mon, Nov 8, 2010 at 2:17 PM, Skipper Seabold <[email protected]>
> wrote:
> >>
> >> On Mon, Nov 8, 2010 at 3:14 PM, Skipper Seabold <[email protected]>
> >> wrote:
> >> > I am doing some optimizations on random samples.  In a small number of
> >> > cases, the objective is not well-defined for a given sample (it's not
> >> > possible to tell beforehand and hopefully won't happen much in
> >> > practice).  What is the most numpythonic way to handle this?  It
> >> > doesn't look like I can use np.seterrcall in this case (without
> >> > ignoring its actual intent).  Here's a toy example of the method I
> >> > have come up with.
> >> >
> >> > import numpy as np
> >> >
> >> > def reset_seterr(d):
> >> >    """
> >> >    Helper function to reset FP error-handling to user's original
> >> > settings
> >> >    """
> >> >    for action in [i+'='+"'"+d[i]+"'" for i in d]:
> >> >        exec(action)
> >> >    np.seterr(over=over, divide=divide, invalid=invalid, under=under)
> >> >
> >>
> >> It just occurred to me that this is unsafe.  Better options for
> >> resetting seterr?
> >
> >
> > Hey Skipper,
> >
> > I don't understand why you need your helper function.  Why not just pass
> the
> > saved dictionary back to seterr()?  E.g.
> >
> > saved = np.seterr('raise')
> > try:
> >     # Do something dangerous...
> >     result = whatever...
> > except Exception:
> >     # Handle the problems...
> >     result = better result...
> > np.seterr(**saved)
> > return result
> >
>
> Ha.  I knew I was forgetting something.  Thanks.
>
>
Your question reminded me to file an enhancement request that I've been
meaning to suggest for a while:
    http://projects.scipy.org/numpy/ticket/1667


Warren
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to