【发布时间】:2016-06-03 05:54:12
【问题描述】:
我很困惑,Scipy 中的某些模块实际上并不是库的一部分,而是对 Numpy 中模块的调用。
一个例子是linalg:
import scipy
scipy.linalg
这给了
AttributeError: 'module' 对象没有属性 'linalg'
另一方面,从 Scipy 调用它的正确方法是
from scipy import linalg
scipy.linalg
必须是句柄
numpy.linalg
这是如何工作的?那么从技术上讲,Numpy 和 Scipy 的区别是什么?
【问题讨论】:
-
看看
scipy/__init__.py- 它的一些导入魔法是documented there,实际上似乎有some particular magic regardinglinalg。 -
@LukasGraf 谢谢!所以需要显式导入是因为与 Numpy 的名称冲突?
-
@martina:不,您还需要明确导入不冲突的那些。
-
不,我认为这不是原因。名称冲突的出现基本上是因为
scipy/__init__.py确实有from numpy import *,但后来del linalg和__all__.remove('linalg')为linalg 撤消了这一点。我无法告诉您 scipy 似乎需要为其子模块显式导入的确切原因,但它似乎适用于其中的大多数。