簡體   English   中英

python中的較低峰值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM