OverflowError: math range error...
Robert Kern
robert.kern at gmail.com
Thu Jun 22 12:51:17 EDT 2006
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
More information about the Python-list
mailing list