我有一个值列表my_list
,它显示了设备在不同时间的使用情况,如下所示:
my_list=[0.0, 11500312.5, 12293437.5, 11896875.0, 7711186.0,
3281768.863, 3341550.1363, 3300694.0,...]
我有很多这种类型的列表,我想查找不同时间最重要变化(减少或增加)的数量。这些列表之一如下所示。例如,如果您查看图形中的第二,第三和第四点,您会发现两个值之间的差异并不大,但是在第五个和西斯点处,该值突然减小。在20、21和22点之间发生了相同的重大变化。
因此,您可以在图中看到它们相对于其他时间的w.r.t显着增加了三到三。想自动找到数字吗?
答案 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