我正在使用Anaconda 2.1.0发行版通过scipy和numpy。我使用Spyder作为我的Python IDE。
当我运行
然而,当我运行
这两个导入方式为什么会有不同的工作方式?为什么
当我运行
import scipy as sp
时,我无法通过sp.
访问其子包,例如optimize、linalg、cluster等。然而,当我运行
import numpy as np
时,我可以通过np
访问它的所有子包,例如linalg、random、matrixlib、polynomial、testing等。这两个导入方式为什么会有不同的工作方式?为什么
import scipy as sp
不能将所有的scipy子包都放进sp
的名称空间中?
import scipy as sp
后,输入sp.optimize
会出现错误。但是如果你执行from scipy import optimize
,突然之间sp.optimize
就不会再出错了。这个问题并不特定于Anaconda。 - celfrom scipy import optimize
时,解释器已经意识到它已经加载了主要的包scipy
,并且将在该已加载的模块中导入子模块optimize
。标识符sp
指向与之前相同的模块,现在已经“更新”,因此你现在也可以通过这个标识符访问子模块optimize
。 - gg349numpy
是基本的、集成的数值包。scipy
是一组独立开发的科学包。它们都使用了numpy
,但彼此之间并不依赖。 - hpaulj