在 python 中使用 FindPeaks 后如何从信号中提取最大值和最小值

How do I pull the maximum and minimum values from a signal after using FindPeaks in python

使用下面的示例,如何将标记为 'Top' 和 'Bottom' 的最大值和最小值提取到单独的数组中?

# Load library
import numpy as np
from findpeaks import findpeaks

# Data
i = 10000
xs = np.linspace(0,3.7*np.pi,i)
X = (0.3*np.sin(xs) + np.sin(1.3 * xs) + 0.9 * np.sin(4.2 * xs) + 0.06 * np.random.randn(i))

# Initialize
fp = findpeaks(method='peakdetect')
results = fp.fit(X)
# Plot
fp.plot1d()

我假设您使用的是 findpeaks library 2.4.0results 变量已包含 minmax 值。您可以通过以下方式获取:

df_interp = results["df"]
min_peaks = df_interp["x"].loc[df_interp["valley"]].values
max_peaks = df_interp["x"].loc[df_interp["peak"]].values
print("min", min_peaks)
print("max", max_peaks)