【问题标题】:How should Pythons statistics.median be implemented?Python的statistics.median应该如何实现?
【发布时间】:2014-08-18 22:11:56
【问题描述】:

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

目前该函数首先对数据进行排序,然后确定中位数。 如果您查看source code,它包含以下注释:

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

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

【问题讨论】:

  • 至少,您只需对足够多的元素进行排序,就可以知道列表的前半部分已排序。

标签: python statistics


【解决方案1】:

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

这里是python中的示例代码

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2010-11-27
      • 2011-11-27
      • 2011-10-29
      相关资源
      最近更新 更多