Anaconda3 scipy.special lambertw 函数 return nan

Anaconda3 scipy.special lambertw function return nan

我在 Ubuntu 14.04 桌面版中使用 Anaconda3 2.2.0 Linux x84_64。我 运行 在一个全新的 Ubuntu 环境中安装 Anaconda .sh 安装文件。

>> from scipy.special import lambertw
>> lambertw(1.7402053563369019e-09)

预期输出为:

(1.7402053533085873e-09+0j)

然而输出是:

(nan+0j)

此问题在 Python 2 Anaconda 或 Windows 版本的 Anaconda 3 中不存在。

此错误的原因是 Continuum 使用较旧的编译器来构建 SciPy 包以实现向后兼容性。特别是,4.4.7 版附近的 GCC 在这个函数和其他一些函数中要求的复数运算存在一些问题。只要您的 GCC 版本足够新(Ubuntu 14.04 附带的版本 4.8.4 可以工作,您可以使用 pip 或手动构建 SciPy 软件包我的经验)。 Continuum 已意识到该问题并正在修复,请参阅此 GitHub 问题:https://github.com/ContinuumIO/anaconda-issues/issues/425