darkside schrieb: > Hi list, > I have to make a division that sometimes yields and inf, and I want to > replace it by 0. > I have try this: > --------------------------------------- > import pylab as p > p.seterr(divide='raise') > l = array vector defined along the program > try: > a = (dr*R*dl)/(1.-((R0/R)*p.sin(l))**2)**(1./2) > except FloatingPointError: > a=0 > --------------------------------- > It works, but it doesn't return an array as expect, if some of the values > are zero, then a = 0. > So I tried: > -------------------------- > a = p.zeros(len(l)) > for i in range(len(l)): > try: > a[i] = (dr*R*dl)/(1.-((R0/R)*p.sin(l[i]))**2)**(1./2) > except FloatingPointError: > a[i]=0 > -------------------------------- > But doing it this way I'm not able to get an exception: > array([ Inf]) > And I don't know what I have to change to get an exception doing things this > way. You can do it that way: a = rand(5,5) b = a.round() c = a/b c[isinf(c)] = 0 # use indexing with boolean array [1] to set zero
In your case: a = (dr*R*dl)/(1.-((R0/R)*p.sin(l))**2)**(1./2) a[isinf(a)] = 0 HTH Armin [1]<http://www.scipy.org/Tentative_NumPy_Tutorial#head-0dffc419afa7d77d51062d40d2d84143db8216c2> ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users