[Numpy-discussion] runtime warning for where

David J Pine djpine at gmail.com
Sat Nov 16 09:05:41 EST 2013


Thanks.  I must have had runtime warnings turned off in my previous
versions of python.


On Sat, Nov 16, 2013 at 8:42 AM, alex <argriffi at ncsu.edu> wrote:

> On Sat, Nov 16, 2013 at 8:28 AM, David Pine <djpine at gmail.com> wrote:
> > The program at the bottom of this message returns the following runtime
> warning:
> >
> > python test.py
> > test.py:5: RuntimeWarning: invalid value encountered in divide
> >  return np.where(x==0., 1., np.sin(x)/x)
> >
> > The function works correctly returning
> > x = np.array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,
> 9.,  10.])
> > y = np.array([ 1.        ,  0.84147098,  0.45464871,  0.04704   ,
> -0.18920062,
> >       -0.19178485, -0.04656925,  0.09385523,  0.12366978,  0.04579094,
> >       -0.05440211])
> >
> > The runtime warning suggests that np.where evaluates np.sin(x)/x at all
> x, including x=0, even though the np.where function returns the correct
> value of 1. when x is 0.  This seems odd to me.  Why issue a runtime
> warning? Nothing is wrong.  Moreover, I don't recall numpy issuing such
> warnings in earlier versions.
> >
> > import numpy as np
> > import matplotlib.pyplot as plt
> >
> > def sinc(x):
> >    return np.where(x==0., 1., np.sin(x)/x)
> >
> > x = np.linspace(0., 10., 11)
> > y = sinc(x)
> >
> > plt.plot(x, y)
> > plt.show()
>
> Also notice that scipy.stats.distributions has its own private
> implementation of where, called _lazywhere.  It avoids evaluating the
> function when the condition is false.
>
>
> https://github.com/scipy/scipy/blob/master/scipy/stats/distributions.py#L506
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20131116/ff0f5c33/attachment.html>


More information about the NumPy-Discussion mailing list