Python-加快找到大于阈值的集合百分位数的速度

千焦耳

我需要找到一组数字中的哪个百分位数超过阈值。有没有办法可以加快速度?对于预期的应用程序,我的实现太慢了。万一这有任何变化,我将使用运行我的程序mpirun -np 100 python program.py我不能使用numba,因为该程序的其余部分使用try / except语句。

import numpy as np
my_vals = []
threshold_val = 0.065
for i in range(60000):
    my_vals.append(np.random.normal(0.05, 0.02))

for i in np.arange(0,100,0.001):
    if np.percentile(my_vals,i) > threshold_val:
        perc = 1*i
        break
else: perc = 100
马特·乔丹

由于高斯(正态)分布会产生钟形曲线,因此您应该能够以最佳概率计算出百分位数,然后编写代码首先进行检查,然后使用经过修改的二进制搜索找到最佳的最低百分比临界点。

例如,如果您确定参数最有可能受到支持,例如17.951(这只是一个示例,我实际上并没有理会它),则应从该点开始而不是从0开始。将其视为二进制搜索-将下限从0开始,将上限从100.0开始,并设置点以将列表一分为二作为分布的最佳百分位数。

如果您当前的上限超过threshold_val,则将下半部分一分为二,找到与之匹配的最低值;如果未超过阈值,则将上半部分等分。等等,例如,在0.000到100.000的范围内,如果从17.951开始并发现它没有超过阈值,则将边界调整为17.952到100.000,然后尝试58.976 (之间的一半)。一旦找到一个高于阈值的值,则将该值用作上限(因为这是非最佳答案)。继续此过程,直到上下限相差0.001,这为您提供了最佳答案。平均而言,您应该运行大约17个测试,而不是100,000个。

万一正态分布发生变化,您还可以自动计算最佳值,因为该分布会产生一个钟形曲线,并且无论如何您都将基于参数知道该钟形曲线的统计信息。

您的解决方案仅需要找到百分位数高于阈值的最小值,因此此方法应最大程度地减少需要检查的样本数量。

还有一个提示:np.percentile必须在代码中对my_vals进行100,000次排序;我不知道预先排序的列表是否有帮助,但是可能值得检查(您可能必须测试几个可能的排序参数,因为它似乎没有记录排序的方向)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python-加快找到大于阈值的集合百分位数的速度

来自分类Dev

你如何在python中找到字典值的百分位数

来自分类Dev

如何在Python组中找到每一行的加权百分位数?

来自分类Dev

计算Python数组中每个设置间隔的百分位数

来自分类Dev

Python numpy升级未通过百分位数方法测试

来自分类Dev

如何在Python中给定百分位数内计算平均值?

来自分类Dev

如何在python中计算每15行的百分位数

来自分类Dev

一起使用zip和百分位数-Python

来自分类Dev

如何在python中的groupby列上获取百分位数?

来自分类Dev

python使用lambda从列表百分位数中对列表中的值进行排名

来自分类Dev

使用python如何计算四分位数/百分位数并给出创建新列进行分析的标准?

来自分类Dev

用于计算百分位数的纯python实现:lambda函数在这里的用途是什么?

来自分类Dev

将数据框中的列转换为百分位数等级-Python 3.x

来自分类Dev

Python创建列以在groupby之后存储某些值的第95个百分位数的平均值

来自分类Dev

Python-可以将百分位数剪切应用于数据帧中的每一列?

来自分类Dev

百分位数算法

来自分类Dev

百分位数算法

来自分类Dev

VGAM的百分位数

来自分类Dev

回归百分位数

来自分类Dev

用 NA 替换大于 95% 百分位数的那些值

来自分类Dev

标绘数据2.5%百分位数97.5%百分位数

来自分类Dev

使用 Python(scipy 或 numpy)如何计算具有 5 个自由度的 Student t 分布的第 2.5 个和第 97.5 个百分位数

来自分类Dev

从PySpark中的类别分布中找到值的百分位数

来自分类Dev

在PowerPivot / DAX中找到计算量度的百分位数

来自分类Dev

哪里可以找到numpy百分位数的源代码

来自分类Dev

如何同时在多个变量的前n个百分位数中找到个案?

来自分类Dev

找到对应于给定百分位数的 DOY

来自分类Dev

我们如何在MATLAB中找到伽马分布的百分位数或分位数?

来自分类Dev

我们如何在MATLAB中找到伽马分布的百分位数或分位数?

Related 相关文章

  1. 1

    Python-加快找到大于阈值的集合百分位数的速度

  2. 2

    你如何在python中找到字典值的百分位数

  3. 3

    如何在Python组中找到每一行的加权百分位数?

  4. 4

    计算Python数组中每个设置间隔的百分位数

  5. 5

    Python numpy升级未通过百分位数方法测试

  6. 6

    如何在Python中给定百分位数内计算平均值?

  7. 7

    如何在python中计算每15行的百分位数

  8. 8

    一起使用zip和百分位数-Python

  9. 9

    如何在python中的groupby列上获取百分位数?

  10. 10

    python使用lambda从列表百分位数中对列表中的值进行排名

  11. 11

    使用python如何计算四分位数/百分位数并给出创建新列进行分析的标准?

  12. 12

    用于计算百分位数的纯python实现:lambda函数在这里的用途是什么?

  13. 13

    将数据框中的列转换为百分位数等级-Python 3.x

  14. 14

    Python创建列以在groupby之后存储某些值的第95个百分位数的平均值

  15. 15

    Python-可以将百分位数剪切应用于数据帧中的每一列?

  16. 16

    百分位数算法

  17. 17

    百分位数算法

  18. 18

    VGAM的百分位数

  19. 19

    回归百分位数

  20. 20

    用 NA 替换大于 95% 百分位数的那些值

  21. 21

    标绘数据2.5%百分位数97.5%百分位数

  22. 22

    使用 Python(scipy 或 numpy)如何计算具有 5 个自由度的 Student t 分布的第 2.5 个和第 97.5 个百分位数

  23. 23

    从PySpark中的类别分布中找到值的百分位数

  24. 24

    在PowerPivot / DAX中找到计算量度的百分位数

  25. 25

    哪里可以找到numpy百分位数的源代码

  26. 26

    如何同时在多个变量的前n个百分位数中找到个案?

  27. 27

    找到对应于给定百分位数的 DOY

  28. 28

    我们如何在MATLAB中找到伽马分布的百分位数或分位数?

  29. 29

    我们如何在MATLAB中找到伽马分布的百分位数或分位数?

热门标签

归档