【问题标题】:How Do I Filter a Numpy Array to Have Only One Y Value per X Value如何过滤 Numpy 数组以使每个 X 值只有一个 Y 值
【发布时间】:2021-04-21 02:03:45
【问题描述】:

我正在尝试为一个电子项目测量和绘制一些 vactrol 的电阻。我使用了一个 Arduino 欧姆表来测量它的电阻。有时数据超出范围,数据有点不稳定和极端。

这里有三组数据,我想在每张图回到左边的时候去掉部分和右端。我真的不知道该怎么表达它。应该很简单,但我真的很卡住。提前致谢!

vactrol curves

【问题讨论】:

    标签: python numpy statistics


    【解决方案1】:

    如果你有一个参考阈值,你可以使用 Numpy 过滤数据,例如 data[data < threshold]threshold 设置为 10_000。或者,如果您想保留这些值(因为删除它们可能并不总是有意义),您也可以使用 data[data < threshold] = np.nan 放置一些 NaN 值。

    如果你没有参考值,那么事情统计会更复杂一些。它们是有效检测此类模式的好方法,但大多数都很复杂。

    最简单的解决方案是使用滑动窗口分析输入数据的标准偏差,并检测与生成的局部标准偏差有关的异常值。你可以看到如何做到这一点here(你需要将它与data[sdValues < threshold] 之类的东西结合起来以删除异常值)。但请注意,此方法对接近 0 的值非常敏感。

    另一种解决方案是计算高斯/中值滤波器,然后测量输入数据的相对差异(或其他更高级的距离度量)(有点像high-pass filter)。您可以查看this post 来执行此操作。

    对于这两种方法,您需要定义一个任意阈值。但与朴素方法不同的是,这个阈值与数据变化直接相关,与原始数据本身无关。您可以根据数据变化、异常值和预期的最终输入找到合适的阈值。

    注意:您可能有兴趣使用scipy.signal(尤其是计算过滤器)。

    【讨论】:

    • 在发布后不久想到了一种天真的方法,在这个非常简单的情况下它工作得很好,但是如果/当我的数据变得更复杂时,非常感谢这些方法。干杯!
    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多