Python 为什么NumPy和SciPy有很多相同的功能?我更喜欢哪个?
可能重复:Python 为什么NumPy和SciPy有很多相同的功能?我更喜欢哪个?,python,numpy,scipy,Python,Numpy,Scipy,可能重复: 例如,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) 为什么会有重复的?只是为了向后兼容?如果是,为什么在不同的地方对它们的定义不同?写新东西时,我应该选择哪一个?来自: 在理想
例如,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)
为什么会有重复的?只是为了向后兼容?如果是,为什么在不同的地方对它们的定义不同?写新东西时,我应该选择哪一个?来自:
在理想情况下,NumPy只包含数组数据类型和最基本的
操作:索引、排序、重塑、基本元素功能等。全部的
数字代码将驻留在SciPy中。然而,NumPy的一个重要目标是
兼容性,因此NumPy会尝试保留其
前任。因此,NumPy包含一些线性代数函数,即使这些函数更多
完全属于SciPy。在任何情况下,SciPy都包含功能更全面的版本
线性代数模块,以及许多其他数值算法。如果你正在做
使用python进行科学计算时,可能需要同时安装NumPy和SciPy。大多数新的>功能属于SciPy而不是NumPy
所以是的,副本是为了向后兼容。一般来说,它们给出相同的结果。然而,正如常见问题所述,新功能通常会在SciPy中实现,但不一定是NumPy。这包括bug修复。例如,我发现numpy.linalg.eig返回的复数矩阵的特征值不正确,而scipy.linalg.eig返回的特征值正确
一般来说,我更喜欢坚持FAQ中的“理想世界”场景:我使用NumPy进行基本数组操作,使用SciPy进行所有线性代数。这样我就不会遇到任何意外 请参阅@aix:这与scipy中包含的numpy函数无关。这是关于独立存在于两者中的东西,而我的问题并没有得到这些答案的回答