Dan*_*ick 5 python numpy scipy
我想使用 scipy.signal.find_peaks 来查找某些 2D 数据中的峰值,但该函数默认忽略所有边缘峰值(出现在数组左侧或右侧边界上的峰值)。有没有办法在结果中包含边缘峰值?
例如,我想要这个代码:
find_peaks([5,4,3,3,2,3])
Run Code Online (Sandbox Code Playgroud)
生产
[0,5]
Run Code Online (Sandbox Code Playgroud)
而是它产生
[]
Run Code Online (Sandbox Code Playgroud)
findpeaks 库可以检测边缘。
pip 安装 findpeaks
例子:
X = [5,4,3,2,1,2,3,3,2,3,2,4,5,6]
# initialize with smoothing parameter
fp = findpeaks(lookahead=1, interpolate=5)
# fit
results=fp.fit(X)
# Plot
fp.plot()
# Print the xy coordinates.
# The first and last one in the array are the edges.
print(results['df'])
# x y labx valley peak labx_topology valley_topology peak_topology
# 0 5 1.0 True False 1.0 True True
# 1 4 1.0 False False 1.0 False False
# 2 3 1.0 False False 1.0 False False
# 3 2 1.0 False False 1.0 False False
# 4 1 1.0 True False 1.0 True False
# 5 2 2.0 False False 2.0 False False
# 6 3 2.0 False True 2.0 False True
# 7 3 2.0 False False 2.0 False False
# 8 2 2.0 True False 2.0 True False
# 9 3 3.0 False True 3.0 False True
# 10 2 3.0 True False 3.0 True False
# 11 4 4.0 False False 4.0 False False
# 12 5 4.0 True False 4.0 True False
# 13 6 4.0 False False 4.0 False True
Run Code Online (Sandbox Code Playgroud)