如何识别噪声数据较低周期的开始和结束?

Man*_*oon 7 python numpy matplotlib pandas

我一天中每隔大约 1 分钟就有噪音数据。

这是一个简单的版本:

在此输入图像描述

如何识别以黄色标记的噪声较小和较低值时段的开始和结束索引值?

这是测试数据:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

arr = np.array([8,9,7,3,6,3,2,1,2,3,1,2,3,2,2,3,2,2,5,7,8,9,15,20,21])

plt.plot(arr)
plt.show()
Run Code Online (Sandbox Code Playgroud)

gmd*_*dev 0

好吧,如果您只想要那个“区域”,那么您需要某种方法来查找特定范围内的点。我们怎样才能做到这一点?好吧,我们可能应该首先找到数组的最小值,然后找到同一数组中落在指定偏差内的其他值:

def lows(arr, dev=0):
    lim = min(arr) + dev
    pts = []
    for i,e in enumerate(arr):
        if e <= lim:
            pts.append((i,e))
    return pts
Run Code Online (Sandbox Code Playgroud)

上面的函数返回落在指定范围内的点的列表。下限是输入数组的最小值,上限是最小值加上您将提供的偏差。例如,如果您想要最小值 1 以内的所有点:

plt.plot(arr)
for pt in lows(arr, 1):
    circle = plt.Circle(pt, 0.2, color='g')
    plt.gca().add_patch(circle)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述