Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么NumPy和SciPy有很多相同的功能?我更喜欢哪个?_Python_Numpy_Scipy - Fatal编程技术网

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函数无关。这是关于独立存在于两者中的东西,而我的问题并没有得到这些答案的回答