调用 scipy.stats.multivariate_normal 后,pylab.plot“无法将浮点 NaN 转换为整数”
Posted
技术标签:
【中文标题】调用 scipy.stats.multivariate_normal 后,pylab.plot“无法将浮点 NaN 转换为整数”【英文标题】:pylab.plot "cannot convert float NaN to integer" after calling scipy.stats.multivariate_normal 【发布时间】:2014-05-27 19:07:39 【问题描述】:在测试回归算法时,我发现了这种奇怪的行为:对于某些协方差矩阵,multivariate_normal 函数给出了正确的样本,但随后(仅)在第一次调用 pylab.plot() 时引发了异常:
ValueError: 无法将浮点 NaN 转换为整数
以下代码重现了错误:
import numpy as np
from scipy.stats import multivariate_normal as mnorm
from matplotlib import pyplot as plt
B = np.array([ 0, 0, 0])
# works fine
v1 = np.array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
# OK. non positive semidefinite, well raised exception
v2 = np.array([[ 0.2 , -0.2, -0.3],
[-0.2, 0.4, -0.9],
[-0.3, -0.9, 0.7]])
# KO. exception (?)
v3 = np.array([[ 0.2 , -0.02, -0.026],
[-0.02, 0.014, -0.009],
[-0.026, -0.009, 0.017]])
w = mnorm(mean=B, cov=v3).rvs()
print w
plt.plot(w)
plt.show()
如果 plt.plot(w) 被第二次调用,那么它就可以工作。有什么想法吗?
版本:
python 2.7.5 Anaconda 1.9.1(64 位)
scipy 0.14.0
matplotlib 1.3.1
numpy 1.8.1
【问题讨论】:
【参考方案1】:嗯,它在这里工作得很好,并说:
[-0.72849048 0.15439657 0.00146853]
并显示:
我使用 python 2.7.6
其他包和你的一样。
希望它有所帮助。祝你好运!
【讨论】:
谢谢@Louis。那很奇怪,那么它可能是我的机器。我会检查其他机器/操作系统。以上是关于调用 scipy.stats.multivariate_normal 后,pylab.plot“无法将浮点 NaN 转换为整数”的主要内容,如果未能解决你的问题,请参考以下文章