无法使用 scipy.stats
Posted
技术标签:
【中文标题】无法使用 scipy.stats【英文标题】:Cannot use scipy.stats 【发布时间】:2014-04-02 05:08:15 【问题描述】:使用 scipy.stats 时出现错误。在导入 scipy 后的脚本中。
AttributeError: 'module' object has no attribute 'stats'
在脚本编辑器中,我可以在输入 scipy 后单击统计信息。从下拉菜单中, 在 python 控制台中,我无法从下拉菜单中选择 python.stats,它不存在。 我正在使用熊猫 2.7 和 SciPy 0.13.0 这是为什么? 有任何已知问题吗?
【问题讨论】:
您是否导入了统计信息,即from scipy import stats
或import scipy.stats
。 stats 子包不使用import scipy
导入,但您的编辑器可能会这样做以完成制表符。
“脚本编辑器”? “下拉菜单”?你用的是什么编辑器?你是怎么安装的?你是怎么安装python的?在终端中,python -c "import scipy.stats"
是否给出错误?另外,显示生成错误的代码,以及导入 scipy.stats 的代码。
谢谢,使用 import scipy.stats 有效。
【参考方案1】:
扩展我的评论(列出答案)。
Scipy 与许多其他大型软件包一样,不会自动导入所有模块。如果要使用 scipy 的子包,则需要直接导入。
但是,一些 scipy 子包会加载其他 scipy 子包,因此例如导入 scipy.stats 也会导入大量其他包。但我从不依赖这个来让子包在命名空间中可用。
在许多使用 scipy 的包中,首选模式是导入子包,以便通过它们的名称使用它们,例如:
>>> from scipy import stats, optimize, interpolate
>>> import scipy
>>> scipy.stats
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'stats'
>>> scipy.optimize
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'optimize'
>>> import scipy.stats
>>> scipy.optimize
<module 'scipy.optimize' from 'C:\Python26\lib\site-packages\scipy\optimize\__init__.pyc'>
【讨论】:
也许会提到从 scipy 导入的明确指南:docs.scipy.org/doc/scipy/reference/api.html(这经常出现,在 SO 上有一个“规范”的答案确实很好。) 谢谢,这解释了观察到的行为。使用 import.scipy.stats 解决了。【参考方案2】:这是意料之中的。当您只导入 scipy 时,大多数子包都不会导入。其中有很多,有很多繁重的扩展模块需要时间来加载。您应该始终显式导入要使用的子包。
https://github.com/scipy/scipy/issues/13618
【讨论】:
以上是关于无法使用 scipy.stats的主要内容,如果未能解决你的问题,请参考以下文章
调用 scipy.stats.multivariate_normal 后,pylab.plot“无法将浮点 NaN 转换为整数”
从 C++ 调用 scipy.stats.anderson_ksamp 时的 EXC_BAD_ACCESS 或 SIGABRT
部署后在 django 中使用 scipy.stats.stats