峰数

时间:2018-02-21 17:42:27

标签: python python-3.x matplotlib

我有一个如下所示的df:

df[(df.Name==name)&(df.Sex==sex)]

除了上面提到的列之外,可用的列是“出生”和“年”。我用这个

绘制了一条“线”图
df.plot('year', 'births', kind='line')

从视觉上看,我可以看到情节中有多个峰值。我怎样才能使用Python找到确切的峰数?

1 个答案:

答案 0 :(得分:0)

如果你只想要正峰值,你可以这样做:

for i in range(1, len(array)-1):
    if max(array[i-1], array[i], array[i+1]) == array[i]:
         print('Peak found at {}'.format(i))

如果你想要正峰和负峰:

for i in range(1, len(array)-1):
    if max(array[i-1], array[i], array[i+1]) == array[i] or
       min(array[i-1], array[i], array[i+1]) == array[i]:
         print('Peak found at {}'.format(i))

如果你想确保有很大的不同:

minimal_ratio = 1.5 # or whatever you choose
for i in range(1, len(array)-1):
    if array[i] > minimal_ratio * array[i-1] and
       array[i] > minimal_ratio * array[i+1]:
         print('Peak found at {}'.format(i))