我很惊讶Scipy中的某些模块实际上并不是库的一部分,而是调用Numpy中的模块。
所有人的一个例子是linalg
:
import scipy
scipy.linalg
这给出了
AttributeError:' module'对象没有属性' linalg'
另一方面,从Scipy调用它的正确方法是
from scipy import linalg
scipy.linalg
必须是
的句柄numpy.linalg
这是如何工作的?从技术上来说,Numpy和Scipy之间的区别是什么?
答案 0 :(得分:3)
从Scipy调用它的正确方法是
from scipy import linalg scipy.linalg
必须是
的句柄numpy.linalg
都能跟得上!他们是完全不同的模块。此外,它应该是import scipy.linalg
然后使用scipy.linalg
或from scipy import linalg
,然后使用linalg
。
如果你想知道SciPy模块是否真的来自NumPy,最简单的方法就是以交互方式查看它:
In [9]: scipy.random
Out[9]: <module 'numpy.random' from '/usr/local/lib/python2.7/dist-packages/numpy/random/__init__.pyc'>
In [10]: scipy.linalg
Out[10]: <module 'scipy.linalg' from '/usr/local/lib/python2.7/dist-packages/scipy/linalg/__init__.pyc'>
正如您所看到的,numpy
中的一个在输出中显示numpy
。这是一个IPython会话,但是常规的Python交互会话会说类似的东西。