#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
Дайте мне знать, если потребуются дополнительные пояснения / примеры, заранее благодарю.
Комментарии:
1. Вы ищете то, что называется надежной статистикой, такой как
median
.2. @cbo, спасибо, что после поиска в Google, похоже, это то, что мне нужно, я обновлю протектор, если получу рабочий код, спасибо.
Ответ №1:
вы можете использовать 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. Медиана — это такая точка, что половина наблюдений находится выше, а половина — ниже, см. Медиана