python - 如何在python中按多数过滤掉列表?
问题描述
我目前正在研究一种算法,该算法从超声波传感器(距离传感器)中获取值,该传感器不断读取并计算最后 10 个取值的平均值。问题是超声波传感器会有随机尖峰,这会显着偏离平均读数
example of readings
19.42
19.43
130.50
19.46
19.44
19.42
144.52
19.4
145.90
19.37
[Average Distance:23] #just a example not actual results
所以现在我想知道是否有任何方法可以忽略基于多数的高值,比如如果列表中有大多数小值,它将忽略高值,反之亦然,如果有大多数高值忽略小值。
example of desired result
19.42
19.43
130.50
19.46
19.44
19.42
144.52
19.4
145.90
19.37
[Average Distance:19] #ignored spiked values are the majority of numbers are 19
如果需要进一步的解释/示例,请告诉我,提前谢谢你。
解决方案
你可以使用numpy.median
:
import numpy as np
vals = np.array([19.42
,19.43
,130.50
,19.46
,19.44
,19.42
,144.52
,19.4
,145.90
,19.37])
np.median(vals)
产生 19.435。中位数是一个点,使得一半的观察值高于一半低于,见中位数
推荐阅读
- ansible - Ansible 角色任务委托
- webpack - 如何配置 Vue CLI 3 以利用 webpack 根文件夹别名?
- ruby-on-rails - Rails 5 HABTM 未经许可的参数
- python - 使用 bs4 获取孙节点
- python - 关键 - 将查询循环转换为 1 个有趣且整合的查询
- c# - 将接口转换为其实现
- c++ - C++ 类对象初始化
- android - 如何使用 Android 常量值作为常量名?
- android - transformNativeLibsWithStripDebugSymbolForRelease 执行失败,mips64el-linux-android-strip
- python - 来自端口的 Apache Beam 输入