Eu estou tentando calcular o desvio padrão do python, sem o uso de numpy
ou qualquer biblioteca externa, exceto para math
. Eu quero ficar melhor na escrita de algoritmos e só estou fazendo isso como um pouco de "trabalho de casa" como eu melhorar a minha python habilidades. Meu objetivo é traduzir esta fórmula em python, mas não estou conseguindo o resultado correto.
Eu estou usando uma matriz de velocidades onde speeds = [86,87,88,86,87,85,86]
Quando eu executo:
std_dev = numpy.std(speeds)
print(std_dev)
Eu recebo: 0.903507902905. Mas eu não quero depender de numpy. Então...
Minha implementação é da seguinte maneira:
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)
Agora, quando eu executar:
std_dev = get_std_dev(speeds)
print(std_dev)
Eu recebo: [0]
mas eu estou esperando 0.903507902905
O que estou ausente aqui?
1.0
.