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
