在值列表中找到重大变化?

时间:2019-04-15 13:04:58

标签: python list plot

我有一个值列表my_list,它显示了设备在不同时间的使用情况,如下所示:

my_list=[0.0, 11500312.5, 12293437.5, 11896875.0, 7711186.0,     
             3281768.863, 3341550.1363, 3300694.0,...]

我有很多这种类型的列表,我想查找不同时间最重要变化(减少或增加)的数量。这些列表之一如下所示。例如,如果您查看图形中的第二,第三和第四点,您会发现两个值之间的差异并不大,但是在第五个和西斯点处,该值突然减小。在20、21和22点之间发生了相同的重大变化。

enter image description here

因此,您可以在图中看到它们相对于其他时间的w.r.t显着增加了三到三。想自动找到数字吗?

1 个答案:

答案 0 :(得分:1)

这可能对您有用。检查该值与移动平均值的比较。它是否超过一个标准偏差?

以下是使用numpy的移动平均值实现:

import numpy as np
def running_mean(x, N):
    cumsum = numpy.cumsum(numpy.insert(x, 0, 0)) 
    return (cumsum[N:] - cumsum[:-N]) / float(N)

来自here

这是比较操作的实现:

TimeSEries=[0.0, 11500312.5, 12293437.5, 11896875.0, 7711186.0,     
             3281768.863, 3341550.1363, 3300694.0]

MOV = running_mean(TimeSEries,3).tolist()
STD = np.std(MOV)
events= []
ind = []
for ii in range(len(TimeSEries)):
  try:
    if TimeSEries[ii] > MOV[ii]+STD:
        print(TimeSEries[ii])
  except IndexError:
    pass

来自here