gpt4 book ai didi

python - 如何在Python中更快地计算中位数

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

我想在超过 500,000 行的数据框中逐行计算中位数。目前我使用 np.median ,因为 numpy 已优化为在单核上运行。还是很慢,我想找到一种并行计算的方法

具体来说,我有 N 个大小为 13 x 500,000 的表,对于每个表,我想添加 Q1、Q3 和中位数列,以便每行的中位数列包含行的中位数。所以我必须计算 N * 500,000 中值。

我尝试使用numexpr,但似乎不可能。

编辑:事实上,我还需要 Q1 和 Q3,所以我无法使用不允许计算四分位数的统计模块。这是我计算当前中位数的方法

    q = np.transpose(np.percentile(data[row_array], [25,50,75], axis = 1))
data['Q1_' + family] = q[:,0]
data['MEDIAN_' + family] = q[:,1]
data['Q3_' + family] = q[:,2]

编辑2我通过使用下面提出的中值算法的中值解决了我的问题

最佳答案

如果中位数的(接近)近似值适合您的目的,您应该考虑计算中位数的中位数,这是一种可以并行执行的分而治之策略。原则上,MoM 串行执行的复杂度为 O(n),在大规模并行系统上并行执行的复杂度接近 O(1)

参见this Wiki entry以获得描述和伪代码。另请参阅this question on Stack Overflow和代码讨论,以及 this ArXiv paper用于 GPU 实现。

关于python - 如何在Python中更快地计算中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55353509/

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