小编典典

导入numpy和Scipy软件包的模块/子软件包的差异

python

我正在通过Anaconda 2.1.0发行版使用scipy和numpy。我使用Spyder作为我的Python IDE。

当我运行时 import scipy as sp,我无法通过以下方式访问子包,例如optimize,linalg,cluster等。sp.

但是,运行时import numpy as np,我可以通过访问所有子包,例如linalg,random,matrixlib,多项式,测试等np

两种进口的工作方式不同,是否有原因?为什么不import scipy as sp将所有scipy子包都捕获到sp的命名空间中?


阅读 218

收藏
2021-01-20

共1个答案

小编典典

通过设计python语言,可能会发生不同的导入行为。

默认情况下,模块(*)的import语句仅导入主模块,而不导入子模块。主模块可能(如的情况下numpy),也可能(如scipy)不导入部分或全部子模块。

其原因如下scipy:在大多数情况下,您只需要scipy包的一个子模块。此默认行为不会在加载代码不需要的子模块时将解释器挂起。

编辑:请注意,numpy默认情况下不会导入所有子模块,例如,它不会加载numpy.f2py

(*)在这里我的意思是一个导入语句,例如import scipyimport scipy as sp,其中加载了模块。当然,如果您编写该代码,import scipy.optimize则python将首先加载主模块,然后加载子模块。

2021-01-20