[英]Lower peaks in python
我有一列值在 20 到 45 之間,平均值為 35。我想用閾值來識別上下峰。 我能夠找到上峰,但不能找到下峰。 我試過下面的代碼:
from scipy.signal import find_peaks
vector=Agitator['AGITATOR AMPS'].values
peaks, _ = find_peaks(vector, height=53)
plt.figure(figsize=(15,5))
plt.plot(vector)
plt.plot(peaks,vector[peaks],"o")
plt.show()
我該如何改進?
find_peaks 只尋找局部最大值(而不是最小值)
您可以在數據的負數上使用 find peaks -> find_peaks(-vector)
Array = np.random.uniform(20,45,size=(50))
peaks, _ = find_peaks(Array, height=20)
peaks2, _ = find_peaks(-Array)
plt.plot(Array)
plt.plot(peaks,Array[peaks],"o")
plt.plot(peaks2,Array[peaks2],"o")
雖然使用負值的 height 參數似乎會造成復雜性。 但是,如果您只是添加最大值,如 find_peaks(-vector+max(vector)) 它應該可以正常工作:
Array = np.random.uniform(20,45,size=(50))
peaks, _ = find_peaks(Array, height=20)
peaks2, _ = find_peaks(-Array+45, height=20)
plt.plot(Array)
plt.plot(peaks,Array[peaks],"o")
plt.plot(peaks2,Array[peaks2],"o")
另外我認為你 53 的身高在 20 到 45 的范圍內是錯誤的,因為 45-20 < 53。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.