簡體   English   中英

如何過濾 Numpy 數組以使每個 X 值只有一個 Y 值

[英]How Do I Filter a Numpy Array to Have Only One Y Value per X Value

我正在嘗試測量和 map 出電子項目的一些 vactrols 的電阻。 我使用了 Arduino 歐姆表來測量它的電阻。 有時數據超出范圍,數據有點不穩定和極端。

這里有三組數據,我想把每個plot的部分和右端去掉,當它回到左邊。 我真的不知道該怎么表達它。 應該很簡單,但我真的很卡住。 提前致謝!

vactrol曲線

如果您有參考閾值,則可以使用 Numpy 天真地過濾數據,使用類似data[data < threshold]的內容,例如將threshold設置為10_000 或者,如果您想保留這些值(因為刪除它們可能並不總是有意義),也可以使用data[data < threshold] = np.nan放置一些 NaN 值。

如果您沒有參考值,那么事情統計會更復雜一些。 它們是有效檢測此類模式的好方法,但大多數都很復雜。

最簡單的解決方案是使用滑動 window 分析輸入數據的標准偏差,並檢測與所得局部標准偏差有關的異常值。 您可以在此處查看如何執行操作(您需要將其與data[sdValues < threshold]之類的內容結合起來以刪除異常值)。 但請注意,此方法對接近 0 的值非常敏感。

另一種解決方案是計算高斯/中值濾波器,然后測量輸入數據的相對差異(或另一個更高級的距離度量)(有點像高通濾波器)。 你可以看看這篇文章來做到這一點。

對於這兩種方法,您需要定義一個任意閾值。 但與朴素方法不同的是,這個閾值與數據變化直接相關,與原始數據本身無關。 您可以根據數據變化、異常值和預期的最終輸入找到一個好的閾值。

注意:您可能對使用scipy.signal感興趣(尤其是計算濾波器)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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