Sheldon wrote: > Hi, > > I have a written a script that will check to see if the divisor is zero > before executing but python will not allow this: > > if statistic_array[0:4] > 0.0: > statistic_array[0,0:4] = > int(multiply(divide(statistic_array[0,0:4],statistic_array \ > [0,4]),10000.0))/100.0 > > Does anyone know why Python is complaining: > > "statistic_array[0,0:4] = > int(multiply(divide(statistic_array[0,0:4],statistic_array[0,4]),10000.0))/100.0 > > OverflowError: math range error" > > and how do I get around this problem? This stupid because there is a if > statement preventing this "dividing by zero".
What kind of arrays are you using? If it's Numeric (and I think it is because numarray and numpy would throw an error at the if: statement), then your test is incorrect. Comparisons yield arrays of boolean values. When a Numeric boolean array is used as a truth value (like in an if: statement), then it will return True is *any* of the values are True. Use Numeric.alltrue(statistic_array[:4] > 0.0) instead. Both numarray and numpy throw an exception when one attempts to use arrays as truth values since the desired meaning (alltrue or sometrue) is ambiguous. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list