SciPy似乎在其自己的命名空间中提供了大多数(但不是全部[1])的NumPy函数.换句话说,如果有一个名为的函数numpy.foo,几乎可以肯定的是scipy.foo.大多数情况下,两者看起来完全相同,通常甚至指向同一个函数对象.
有时,他们是不同的.举一个最近出现的例子:
numpy.log10是一个返回NaNs为负参数的ufunc ;scipy.log10 返回负参数的复数值,并且看起来不是ufunc.同样可以说,大约log,log2和logn,但不是关于log1p[2].
另一方面,numpy.exp并且scipy.exp对于相同的ufunc看起来是不同的名称.这也是真正的scipy.log1p和numpy.log1p.
另一个例子是numpy.linalg.solveVS scipy.linalg.solve.它们相似,但后者提供了一些额外的功能.
为什么明显重复?如果这是numpy对scipy命名空间的批量导入,为什么行为和缺失函数的微妙差异?是否有一些总体逻辑可以帮助消除混乱?
[1] ,,numpy.min 和其他几个人都在没有同行的命名空间.numpy.maxnumpy.absscipy
[2]使用NumPy 1.5.1和SciPy 0.9.0rc2进行测试.
后者只是前者的同义词,还是两种不同的FFT实现?哪一个更好?