如何在Python中检测函数最末端的峰值?

2024-05-01 21:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用scipy找到函数的峰值,但是我希望它也能检测到边界处的峰值。下面是一个此类案例的快照。正如我们看到的,该方法已检测到10个峰值,但我希望总峰值为12个,包括边界处的峰值。有什么办法吗?另外,我不想像那样包括开始索引和结束索引。我将在一个大数据集上运行这个方法,以便寻找一个通用的解决方案

coordinates = df.loc[:, columns].sum(axis=1)
peaks_max_y = argrelextrema(coordinates.to_numpy(), np.greater)[0]

index = np.arange(df.shape[0])
_ = plt.plot(index, coordinates, 'b-', linewidth = 2)
_ = plt.plot(index[peaks_max_y], coordinates[peaks_max_y], 'ro', label = 'minima peaks')
plt.title(pid)

enter image description here


Tags: 方法函数dfindexplotnppltscipy
1条回答
网友
1楼 · 发布于 2024-05-01 21:23:47

既然find_peaks将处理其余的点,那么只检查端点处的斜率如何?如果左侧的坡度为负值,则起点处有一个峰值。类似地,如果最后是正值,则有一个峰值

大概是这样的:

if np.sign(np.diff(y))[0] < 0:
    # accept y[0] as peak
if np.sign(np.diff(y))[-1] > 0:
    # accept y[-1] as peak

相关问题 更多 >