【发布时间】:2015-12-02 11:50:25
【问题描述】:
我正在使用warnings 模块将警告作为错误发出。
当我调用我的函数plot_fig_4 时,我收到以下错误:
In [5]: plot_amit.plot_fig_4()
g: 1 of 3
theta_E: 1 of 1000
---------------------------------------------------------------------------
RuntimeWarning Traceback (most recent call last)
<ipython-input-5-5a631d2493d7> in <module>()
----> 1 plot_amit.plot_fig_4()
/home/dan/Science/dopa_net/plot_amit.pyc in plot_fig_4()
130 tau_0, tau,
131 theta_E_,
--> 132 H)
133
134 # Iterate through theta_I, starting at the lowest value.
/home/dan/Science/dopa_net/plot_support.py in _get_d_phi(mu, sigma, tau_0, tau_i, theta_i, H)
2059 for (i, mu_), (j, sigma_) in itertools.product(enumerate(mu),
2060 enumerate(sigma)):
-> 2061 phi[i, j] = _get_phi(tau_0, tau_i, theta_i, mu_, sigma_, H)
2062 import pdb
2063 pdb.set_trace()
/home/dan/Science/dopa_net/plot_support.py in _get_phi(tau_0, tau, theta_over_J, mu_over_J, sigma_over_J, H)
1835
1836 # Compute the integral.
-> 1837 integral = _integrate_little_phi(lower, alpha)
1838
1839 # Compute phi.
/home/dan/Science/dopa_net/plot_support.py in _integrate_little_phi(lower, upper)
1869 upper_int = _integrate(upper)
1870 lower_int = _integrate(lower)
-> 1871 return upper_int - lower_int
1872
1873
RuntimeWarning: invalid value encountered in double_scalars
好的。所以我在_integrate_little_phi 中贴了一个pdb.set_trace,就在引发错误的那一行之前,重新运行,并检查相关变量的值:
In [7]: plot_amit.plot_fig_4()
g: 1 of 3
theta_E: 1 of 1000
> /home/dan/Science/dopa_net/plot_support.py(1873)_integrate_little_phi()
-> return upper_int - lower_int
(Pdb) upper_int
inf
(Pdb) lower_int
inf
(Pdb) type(upper_int)
<type 'numpy.float64'>
(Pdb) type(lower_int)
<type 'numpy.float64'>
嗯。所以引发了错误,因为我从无穷大中减去了无穷大。我可以复制吗?
(Pdb) upper_int - lower_int
*** RuntimeWarning: invalid value encountered in double_scalars
是的。但是等一下。让我们再尝试一件事:
(Pdb) np.inf
inf
(Pdb) type(np.inf)
<type 'float'>
(Pdb) np.inf - np.inf
nan
什么什么?当我使用np.inf(其中np 是numpy)直接从无穷大中减去无穷大时,我得到nan,而不是RuntimeWarning。
为什么我在这个例子中得到nan 而在另一个例子中得到RuntimeWarning? 我故意发布了类型的差异(float 与 float64)。问题是,为什么这些(微不足道的)不同类型会产生不同的结果?
【问题讨论】:
标签: python numpy runtime-error warnings infinity