可能重复: 枕骨与矮胖的关系
例如,NumPy有窗口函数 bartlett、blackman、hamming、hanning、kaiser,SciPy有这些和其他几个,但它们的输出似乎是相同的。
NumPy有numpy.fft.fft2(a, s=None, axes=(-2, -1))。
SciPy有scipy.fftpack.fft2(x, shape=None, axes=(-2, -1), overwrite_x=0)。
为什么会有副本?只是为了向后兼容?如果是的话,为什么在不同的地方对它们的定义不同呢?当我写新的东西时,我应该更喜欢哪一种?
发布于 2012-05-26 15:46:26
来自SciPy常见问题
在理想的世界中,NumPy只包含数组数据类型和最基本的操作:索引、排序、整形、基本元素函数等等。所有的数字代码将驻留在SciPy中。然而,NumPy的重要目标之一是兼容性,因此NumPy试图保留其前任所支持的所有功能。因此,NumPy包含一些线性代数函数,尽管这些函数更恰当地属于SciPy。无论如何,SciPy包含更全面的线性代数模块,以及许多其他的数值算法。如果您正在使用python进行科学计算,那么您可能应该同时安装NumPy和SciPy。大多数新的>特性属于SciPy而不是NumPy。
所以是的,复制是为了向后兼容。总的来说,他们给出了同样的结果。然而,正如常见问题所述,新特性通常被实现到SciPy中,但不一定是NumPy。这包括错误修复。例如,我发现numpy.linalg.eig为一个复杂矩阵返回了不正确的特征值,而scipy.linalg.eig返回了正确的特征值。
一般来说,我更喜欢使用FAQ中的“理想世界”场景:我使用NumPy作为基本数组操作,SciPy用于所有线性代数。这样我就不会遇到任何意外。
https://stackoverflow.com/questions/10766082
复制相似问题