Я пытаюсь рассчитать стандартное отклонение в python без использования numpy
или любой внешней библиотеки, за исключением math
. Я хочу стать лучше в написании алгоритмов и просто делаю это в качестве "домашнего задания", совершенствуя свои навыки работы на python. Моя цель-перевести эту формулу на python, но я не получаю правильного результата.
Я использую множество скоростей, где speeds = [86,87,88,86,87,85,86]
Когда я бегу:
std_dev = numpy.std(speeds)
print(std_dev)
Я получаю: 0,903507902905. Но я не хочу полагаться на глупышку. Так...
Моя реализация заключается в следующем:
import math
speeds = [86,87,88,86,87,85,86]
def get_mean(array):
sum = 0
for i in array:
sum = sum + i
mean = sum/len(array)
return mean
def get_std_dev(array):
# get mu
mean = get_mean(array)
# (x[i] - mu)**2
for i in array:
array = (i - mean) ** 2
return array
sum_sqr_diff = 0
# get sigma
for i in array:
sum_sqr_diff = sum_sqr_diff + i
return sum_sqr_diff
# get mean of squared differences
variance = 1/len(array)
mean_sqr_diff = (variance * sum_sqr_diff)
std_dev = math.sqrt(mean_sqr_diff)
return std_dev
std_dev = get_std_dev(speeds)
print(std_dev)
Теперь, когда я бегу:
std_dev = get_std_dev(speeds)
print(std_dev)
Я получаю: [0]
но я ожидаю 0,903507902905
Что я здесь упускаю?
1.0
.