python – numpy: Invalid value encountered in true_divide

python – numpy: Invalid value encountered in true_divide

You may have a NAN, INF, or NINF floating around somewhere. Try this:

np.isfinite(diff_images).all()
np.isfinite(b_0).all()

If one or both of those returns False, thats likely the cause of the runtime error.

The reason you get the runtime warning when running this:

log_norm_images = np.where(b_0 > 0, np.divide(diff_images, b_0), 0)

is that the inner expression

np.divide(diff_images, b_0)

gets evaluated first, and is run on all elements of diff_images and b_0 (even though you end up ignoring the elements that involve division-by-zero). In other words, the warning happens before the code that ignores those elements. That is why its a warning and not an error: there are legitimate cases like this one where the division-by-zero is not a problem because its being handled in a later operation.

python – numpy: Invalid value encountered in true_divide

Another useful Numpy command is nan_to_num(diff_images)
By default it replaces in a Numpy array; NaN to zero, -INF to -(large number) and +INF to +(large number)

You can change the defaults, see https://numpy.org/doc/stable/reference/generated/numpy.nan_to_num.html

Leave a Reply

Your email address will not be published.