首页 > 解决方案 > 何时使用 numpy 与统计模块

问题描述

在使用一些统计分析工具时,我发现至少有 3 种 Python 方法可以计算平均值和标准差(不包括“自己动手”技术):

这让我摸不着头脑。应该有一种明显的方法来做到这一点,对吧?:-) 我发现了一些较旧的 SO 帖子。一个比较了np.mean()vs的性能优势statistics.mean()。它还突出了求和运算符的差异。那篇文章在这里: 为什么统计意味着这么慢

我正在处理numpy数组数据,我的值在一个很小的范围内(-1.0 到 1.0,或 0.0 到 10.0),所以这些numpy函数似乎是我的应用程序的明显答案。对于我将要处理的数据,它们在速度、准确性和易于实施方面取得了很好的平衡。

看来该statistics模块主要适用于那些在列表(或其他形式)中有数据的人,或者适用于广泛变化的范围[1e+5, 1.0, 1e-5]。这仍然是一个公平的说法吗?是否有任何numpy增强功能可以解决求和运算符中的差异?最近的发展是否带来任何其他优势?

数值算法通常具有积极和消极的方面:有些更快,或更准确,或者需要更小的内存占用。当面临 3-4 种计算方法的选择时,开发人员的责任是为他/她的应用程序选择“最佳”方法。通常这是在竞争优先级和资源之间的平衡行为。

我的目的是征求在统计分析方面经验丰富的程序员的回复,以深入了解上述方法(或其他/更好的方法)的优缺点。[我对没有支持事实的猜测或意见不感兴趣。] 我会根据我的设计要求做出自己的决定。

标签: pythonnumpystatistics

解决方案


为什么 NumPy 会重复 SciPy 的功能?

来自 SciPy 常见问题解答NumPy 和 SciPy 有什么区别?

在理想的世界中,NumPy 将只包含数组数据类型和最基本的操作:索引、排序、重塑、基本元素函数等。所有数字代码都将驻留在 SciPy 中。然而,NumPy 的一个重要目标是兼容性,因此 NumPy 试图保留其前任所支持的所有功能。

它建议在 NumPy 上使用 SciPy:

无论如何,SciPy 包含功能更全面的线性代数模块版本,以及许多其他数值算法。如果您使用 Python 进行科学计算,您可能应该同时安装 NumPy 和 SciPy。大多数新功能属于 SciPy 而不是 NumPy。

我应该什么时候使用统计库?

从统计库文档

该模块无意成为第三方库(如 NumPy、SciPy)或针对专业统计学家(如 Minitab、SAS 和 Matlab)的专有全功能统计软件包的竞争对手。它针对图形和科学计算器的水平。

因此,我不会将它用于严重(即资源密集型)计算。

statsmodels 和 SciPy 有什么区别?

关于页面的 statsmodels :

scipy.stats 的模型模块最初由 Jonathan Taylor 编写。有一段时间它是 scipy 的一部分,但后来被删除了。在 2009 年 Google Summer of Code 期间,statsmodels 被更正、测试、改进并作为一个新包发布。此后,statsmodels 开发团队不断添加新模型、绘图工具和统计方法。

因此,您可能有一个 SciPy 无法满足的要求,或者由专用库更好地满足。例如 SciPy 文档中的scipy.stats.probplot注释

Statsmodels 具有这种类型的更广泛的功能,请参阅statsmodels.api.ProbPlot

因此,在这种情况下,您将需要转向 SciPy 以外的统计库。


推荐阅读