I have a moderately large piece (a few thousand lines) of Python/Numpy/Scipy code that is throwing up NaNs with certain inputs. I’ve looked for, and found, some of the usual suspects (log(0) and the like), but none of the obvious ones seem to be the culprits in this case.
Is there a relatively painless way (i.e., apart from putting exception handling code around each potential culprit), to find out where these NaNs are coming from?
I would start with
numpy.seterr.There, an invalid operation is defined as “result is not an expressible number, typically indicates that a NaN was produced”. By default, this seems to be set to “ignore”.