NumPy和SciPy的关系?
numpy提供了数组对象,面向的任何使用者。scipy在numpy的基础上,面向科学家和工程师,提供了更为精准和广泛的函数。scipy几乎实现numpy的所有函数,一般而言,如果scipy和numpy都有这个函数的话,应该用scipy中的版本,因为scipy中的版本往往做了改进,效率更高。但是,有一些同名函数,却有着不同的行为,比如log10,linalg.solve。这些不同的行为,最需要我们的注意。
scipy对numpy的“覆盖”是怎么样的?用SciPy Reference Guide中的话说,“all of the Numpy functions have been subsumed into the scipy namespace so that all of those functions are available without additionally importing Numpy.”
同时,在scipy的__init__.py中,找到了这个:
import numpy as _num
linalg = None
from numpy import *
from numpy.random import rand, randn
from numpy.fft import fft, ifft
from numpy.lib.scimath import *
可见,reference所言不虚,但也不精准。对于两者的清晰界定,以__init__.py为准。
如果想继续深究numpy和scipy中同名函数的不同,有一个函数非常好用,那就是source,它可以用来查看源代码。通过分析源代码,自然就能很清楚的搞明白实现的不同啦。
以上可知,尽管有了scipy,numpy的用处就没多大了,但是呢,numpy还是有一定的“不可替代性”。所以,没什么特殊的要求,这样引入:
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt