变得刻薄和抹去数字有很大的区别
Getting mean and erasing numbers with to much difference
所以,假设我有一个由以下部分组成的列表:2231, 2240, 2236, 2238, 7
现在这些数字来自一个传感器,一个高度传感器,所以有些数字可能有故障,比如7
。
如果我想得到一个合理的平均值,我会过滤掉7
,作为一个算法,我该如何做到这一点?请在Python、C++甚至Frink中显示可理解的代码(这就是我打算使用的。)
我曾想过使用标准差,但我不知道如何实现它。对不起,我找不到我尝试过的任何代码,我在它不起作用后删除了它。
使用标准偏差:
#!/usr/local/bin/python2.7
import math
lista = [2231, 2240, 2236, 2238, 7]
newlist = []
mean = 0
newmean = 0
variance = 0
for i in lista:
mean += i
mean = mean/float(len(lista))
for i in lista:
variance += (i*i)
variance = variance/float(len(lista))
variance = math.sqrt(variance)
minval = variance - mean
maxval = variance + mean
for i in lista:
if i >= minval and i <= maxval:
newlist.append(i)
print newlist
for i in newlist:
newmean += i
newmean = newmean/float(len(newlist))
print newmean
如果您希望手动输入"minval"answers"maxval",则可以跳过大部分代码。
我假设您可以在两个读数之间定义ACCEPABLE_DIFFERENCE。如果你的数值可以根据读数从最小值/最大值跳出来,那么均值实际上对你没有帮助。
以下是python中的示例代码,说明了这一点:
#!/usr/local/bin/python2.7
ACCEPTABLE_DIFF = 100
arr = [2231, 2240, 2236, 2238, 7]
for index in range(1,len(arr)):
if (abs(arr[index] - arr[index-1]) > ACCEPTABLE_DIFF):
del arr[index]
print arr
另一种选择是使用差异百分比:
#!/usr/local/bin/python2.7
ACCEPTABLE_DIFF_PERC = 5
arr = [2231, 2240, 2236, 2238, 7]
for index in range(1,len(arr)):
if (abs(arr[index] - arr[index-1]) > (arr[index-1]*ACCEPTABLE_DIFF_PERC/100)):
del arr[index]
print arr
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- int(c) 和 c-'0' 之间的区别。C++
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- C++ - "!pointer"和"pointer == nullptr"的区别?
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 将数字转换为字母(例如:123 转换为一二三)
- php和c++中数字格式/浮点之间的区别
- 变得刻薄和抹去数字有很大的区别
- C++:按变量值而不是数字移位 ->有什么区别?