gpt4 book ai didi

numpy - 为什么 octave 的 prctile 和 numpy 的百分位数之间存在差异?

转载 作者:行者123 更新时间:2023-12-01 09:09:55 25 4
gpt4 key购买 nike

我一直在将 matlab/octave 程序重写为 numpy,并在某些结果值中遇到差异。百分位数/prctile 和标准偏差函数都会出现这种情况。

在 Numpy 中:

import matplotlib.mlab as ml
import numpy

>>> t = numpy.linspace(0,100, 100)
>>> numpy.percentile(t,95)
95.0
>>> numpy.std(t)
29.157646512850626
>>> ml.prctile(t,95)
95.000000000000014

Octave :

octave:1> t = linspace(0,100,100)';
octave:2> prctile(t,95)
ans = 95.454545
octave:3> std(t)
ans = 29.304537

虽然 't' 的数组值相同,但结果比我想象的更加不同。

在 numpy 帮助(numpy.std)中,他们特别提到算法是:

std = sqrt(mean(abs(x - x.mean())**2))

所以我在 Octave 音程中实现了它并得到了 numpy 给出的确切答案。所以看起来标准偏差函数不同。
但为什么/如何?哪个是正确的? (如果有的话)

甚至 prctile/percentile?

以防万一,因为我在 Linux aptosid...

GNU Octave,版本 3.6.2

numpy.version '1.6.2rc1'

最佳答案

当百分位数位于两个数据点之间时,Numpy 只是使用不同的算法。 Octave、Matlab 和 R 总是在需要时将它准确地居中在两点之间(我相信),numpy 做的比这多一点......如果你检查 http://en.wikipedia.org/wiki/Percentile您会看到有几种方法可以计算百分位数。

关于numpy - 为什么 octave 的 prctile 和 numpy 的百分位数之间存在差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12324615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com