python 游泳池相邻的违规者

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 游泳池相邻的违规者相关的知识,希望对你有一定的参考价值。

import numpy as np

# Author : Alexandre Gramfort
# license : BSD


def pav(y):
    """
    PAV uses the pair adjacent violators method to produce a monotonic
    smoothing of y

    translated from matlab by Sean Collins (2006) as part of the EMAP toolbox
    """
    y = np.asarray(y)
    assert y.ndim == 1
    n_samples = len(y)
    v = y.copy()
    lvls = np.arange(n_samples)
    lvlsets = np.c_[lvls, lvls]
    flag = 1
    while flag:
        deriv = np.diff(v)
        if np.all(deriv >= 0):
            break

        viol = np.where(deriv < 0)[0]
        start = lvlsets[viol[0], 0]
        last = lvlsets[viol[0] + 1, 1]
        s = 0
        n = last - start + 1
        for i in range(start, last + 1):
            s += v[i]

        val = s / n
        for i in range(start, last + 1):
            v[i] = val
            lvlsets[i, 0] = start
            lvlsets[i, 1] = last
    return v


if __name__ == '__main__':
    dat = np.arange(10).astype(np.float)
    dat += 2 * np.random.randn(10)  # add noise

    dat_hat = pav(dat)

    import pylab as pl
    pl.close('all')
    pl.plot(dat, 'rx')
    pl.plot(dat_hat, 'b')
    pl.show()

以上是关于python 游泳池相邻的违规者的主要内容,如果未能解决你的问题,请参考以下文章

并查集 | 二分查找 + BFSLeetCode 778. 水位上升的泳池中游泳

数据结构与算法之深入解析“水位上升的泳池中游泳”的求解思路与算法示例

马云演讲让挪威企业high了,董明珠回应银隆二股东身份丨日报

信号 SIGSEGV:当我使用 go-python3 时,分段违规代码 = 0x1

Python 多处理:最大。池工作进程的数量?

说说Python中的queue