kcw*_*w78 10 python statistics numpy
在使用一些统计分析工具时,我发现至少有 3 种 Python 方法来计算均值和标准差(不包括“自己动手”技术):
np.mean()
, np.std()
(ddof=0 或 1)statistics.mean()
,statistics.pstdev()
(和/或statistics.stdev
) scipy.statistics
包裹这让我摸不着头脑。应该有一种明显的方法来做到这一点,对吧?:-) 我发现了一些较旧的 SO 帖子。一个比较了np.mean()
vs的性能优势statistics.mean()
。它还突出了 sum 运算符的差异。那篇文章在这里:
为什么统计平均值这么慢
我正在处理numpy
数组数据,我的值落在一个很小的范围内(-1.0 到 1.0,或 0.0 到 10.0),所以这些numpy
函数似乎是我的应用程序的明显答案。对于我将要处理的数据,它们在速度、准确性和易于实施之间取得了良好的平衡。
看起来该statistics
模块主要用于那些在列表(或其他形式)中包含数据的模块,或者用于范围广泛的模块[1e+5, 1.0, 1e-5]
。这仍然是一个公平的声明吗?是否有任何numpy
增强功能可以解决 sum 运算符中的差异?最近的发展是否带来了其他优势?
数值算法通常有积极和消极的方面:有些更快,或更准确,或者需要更小的内存占用。当面临 3-4 种计算方法的选择时,开发人员的责任是为他/她的应用程序选择“最佳”方法。通常,这是竞争优先级和资源之间的平衡行为。
我的目的是征求具有统计分析经验的程序员的回复,以深入了解上述方法(或其他/更好的方法)的优缺点。[我对没有支持事实的猜测或意见不感兴趣。] 我将根据我的设计要求做出自己的决定。
为什么 NumPy 重复 SciPy 的功能?
\n来自 SciPy 常见问题解答NumPy 和 SciPy 之间有什么区别?:
\n\n\n在理想的情况下,NumPy 除了数组数据类型和最基本的操作之外什么都不包含:索引、排序、整形、基本元素函数等。所有数字代码都将驻留在 SciPy 中。然而,NumPy\xe2\x80\x99 的重要目标之一是兼容性,因此 NumPy 尝试保留其前身支持的所有功能。
\n
它建议使用 SciPy 而不是 NumPy:
\n\n\n无论如何,SciPy 包含功能更齐全的线性代数模块版本,以及许多其他数值算法。如果您使用 Python 进行科学计算,您可能应该同时安装 NumPy 和 SciPy。大多数新功能属于 SciPy 而不是 NumPy。
\n
我什么时候应该使用统计库?
\n来自统计库文档:
\n\n\n该模块无意成为第三方库(例如 NumPy、SciPy)或针对专业统计学家(例如 Minitab、SAS 和 Matlab)的专有全功能统计包的竞争对手。它针对的是图形和科学计算器的水平。
\n
因此我不会将它用于严重的(即资源密集型)计算。
\nstatsmodels 和 SciPy 之间有什么区别?
\n来自 statsmodels关于页面:
\n\n\nscipy.stats 的 models 模块最初由 Jonathan Taylor 编写。有一段时间它是 scipy 的一部分,但后来被删除。在 Google Summer of Code 2009 期间,statsmodels 得到了纠正、测试、改进并作为新包发布。此后,statsmodels 开发团队不断添加新模型、绘图工具和统计方法。
\n
因此,您可能有 SciPy 无法满足的要求,或者可以通过专用库更好地满足。\n例如,SciPy 文档中的注释如下scipy.stats.probplot
:
\n\nStatsmodels 具有更广泛的此类功能,请参阅
\nstatsmodels.api.ProbPlot
。
因此,在这种情况下,您将需要求助于 SciPy 之外的统计库。
\n