为啥 NumPy 和 SciPy 有很多相同的功能?我应该更喜欢哪个? [复制]
Posted
技术标签:
【中文标题】为啥 NumPy 和 SciPy 有很多相同的功能?我应该更喜欢哪个? [复制]【英文标题】:Why do NumPy and SciPy have a lot of the same functions? Which should I prefer? [duplicate]为什么 NumPy 和 SciPy 有很多相同的功能?我应该更喜欢哪个? [复制] 【发布时间】:2012-06-01 17:23:46 【问题描述】:可能重复:Relationship between scipy and numpy
例如,NumPy 有 window functionsbartlett
、blackman
、hamming
、hanning
、kaiser
,而 SciPy 有 these and several more,但它们似乎产生相同的输出。
NumPy 有numpy.fft.fft2(a, s=None, axes=(-2, -1))
。
SciPy 有 scipy.fftpack.fft2(x, shape=None, axes=(-2, -1), overwrite_x=0)
。
为什么会有重复?只是为了向后兼容?如果是这样,为什么它们在不同的地方有不同的定义?写新东西时我应该更喜欢哪个?
【问题讨论】:
请看***.com/questions/6200910/… @aix:这与嵌入到 scipy 中的 numpy 函数无关。这是关于在两者中独立存在的东西,我的问题没有得到这些答案的回答 【参考方案1】:来自SciPy FAQ:
在理想世界中,NumPy 只包含数组数据类型和最基本的 操作:索引、排序、重塑、基本元素函数等。全部 数字代码将驻留在 SciPy 中。然而,NumPy 的重要目标之一是 兼容性,因此 NumPy 尝试保留其任一支持的所有功能 前辈。因此 NumPy 包含一些线性代数函数,即使这些更多 正确地属于 SciPy。在任何情况下,SciPy 都包含功能更全的版本 线性代数模块,以及许多其他数值算法。如果你正在做 使用 python 进行科学计算,您可能应该同时安装 NumPy 和 SciPy。 > 大多数新功能属于 SciPy 而不是 NumPy。
所以是的,重复是为了向后兼容。一般来说,它们给出相同的结果。但是,正如常见问题解答所述,新功能通常在 SciPy 中实现,但不一定是 NumPy。这包括错误修复。例如,我发现 numpy.linalg.eig 为复杂矩阵返回了不正确的特征值,而 scipy.linalg.eig 返回了正确的特征值。
一般来说,我更喜欢坚持常见问题解答中的“理想世界”场景:我使用 NumPy 进行基本的数组操作,使用 SciPy 处理我的所有线性代数。这样我就不会遇到任何意外。
【讨论】:
以上是关于为啥 NumPy 和 SciPy 有很多相同的功能?我应该更喜欢哪个? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 scipy sparse 和 numpy 数组的乘法函数会给出不同的结果?
为啥 scipy 的稀疏 csr_matrix 的向量点积比 numpy 的密集数组慢?
numpy.polyfit 和 scipy.polyfit 有啥区别? [复制]