Pythons statistics.median应该如何实现?

时间:2014-08-18 22:11:56

标签: python statistics

在新的Python 3.4中,他们引入了一个新的统计模块。除此之外,它还具有计算中位数的功能。

目前,该功能首先对数据进行排序,然后确定中位数。 如果您查看source code,则其中包含备注:

  

# FIXME: investigate ways to calculate medians without sorting? Quickselect?

有没有比当前使用的功能更快的方法来计算中位数? Python应该使用哪种算法来确定中位数?

2 个答案:

答案 0 :(得分:0)

您可以使用min-max-median堆来查找恒定时间内的最小值,最大值和中值(并使用线性时间来构建堆)。如果您想了解更多关于使用堆来获取媒体的信息,请阅读min-max heaps

这是python

中的示例代码

答案 1 :(得分:0)

最佳中位数发现算法需要线性时间,可以按如下方式实现: Python implementation of "median of medians" algorithm

对于小型集合,排序和搜索方法可以更快并减少开销,但此方法最适合大型数据集。

算法如下所示:http://en.wikipedia.org/wiki/Selection_algorithm