首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么NumPy和SciPy有很多相同的功能?我应该更喜欢哪一个?

为什么NumPy和SciPy有很多相同的功能?我应该更喜欢哪一个?
EN

Stack Overflow用户
提问于 2012-05-26 12:08:41
回答 1查看 2.5K关注 0票数 7

可能重复: 枕骨与矮胖的关系

例如,NumPy有窗口函数 bartlettblackmanhamminghanningkaiser,SciPy有这些和其他几个,但它们的输出似乎是相同的。

NumPy有numpy.fft.fft2(a, s=None, axes=(-2, -1))

SciPy有scipy.fftpack.fft2(x, shape=None, axes=(-2, -1), overwrite_x=0)

为什么会有副本?只是为了向后兼容?如果是的话,为什么在不同的地方对它们的定义不同呢?当我写新的东西时,我应该更喜欢哪一种?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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用于所有线性代数。这样我就不会遇到任何意外。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10766082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档