【问题标题】:How to speed up data fitting and get percentile function如何加快数据拟合并获得百分位函数
【发布时间】:2021-09-02 20:31:50
【问题描述】:

我有一个一维数组。我想尽可能快地获得该数据拟合的某个百分位数(例如 5%)(蒙特卡洛方法最好,高斯 KDE 方法也可以)。因为这个函数被使用了数百万次。

我的方法是使用 scipy gaussian_kde。

我的问题是:

  1. 还有其他方法可以提高 gaussian_kde 的速度吗? 主要费用是kde = gaussian_kde(x, bw_method=0.02) #about 220us

【问题讨论】:

    标签: python performance numba data-fitting processing-efficiency


    【解决方案1】:

    您似乎重写了一个优化良好的 Numpy 函数,名为 np.quantile。调用np.quantile(x, 0.05) 提供准确/准确的 5% 分位数,比您的优化实现快 4 倍!请注意,如果您需要在不同的独立数组上多次调用此函数,那么借助Numba 并行性,您可以进一步加快计算速度。

    【讨论】:

    • 我认为 OP 正在寻找 np.percentile(x, 5)。这里的 5 表示沿给定轴的第 5 个百分位数。 numpy.org/doc/stable/reference/generated/numpy.percentile.html.
    • @VRComp 是的,它也可以。在这种情况下,两者都提供相同的结果并且同样快。感谢您提供此信息。
    • @JérômeRichard 感谢您的评论,但这里的数据拟合是必要的。你会发现 np.percentile(x, 5) 和 halfSearch(x,0.05) 的结果并不完全相同。关于 Numba 并行,我已经将这个函数设置为在每个内核中独立调用数百万次,所以并行化这个函数在这里无济于事。
    猜你喜欢
    • 2014-01-13
    • 2016-04-11
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多