在 python3 中,scipy 的 stats.rv_discrete 函数要求概率的总和为 1,但由于浮点数在内存中的表示,总和不是 1。
幸运的是 scipy 安装在我的主目录中,所以我能够注释掉检查 ~.local/lib/python3.7/site-packages/scipy/stats/_distn_infrastructure.py 文件中总和的“if”行,因此让它工作。但是当这段代码要在另一个系统中运行时该怎么办。将文件复制到工作目录并导入会导致太多错误。从头开始的自定义代码(使用列表)似乎效率很低。
if len(xk) != len(pk):
raise ValueError("xk and pk need to have the same length.")
#if not np.allclose(np.sum(pk), 1):
#raise ValueError("The sum of provided pk is not 1.")
我希望得到一个从头开始的有效功能或适当的解决方法。