Estoy tratando de calcular la desviación estándar de python sin el uso de numpy
o de ninguna librería externa, excepto para math
. Quiero ser mejor en la escritura de algoritmos y sólo estoy haciendo esto como un poco de "deberes" como puedo mejorar mi python habilidades. Mi objetivo es traducir esta fórmula en python, pero no estoy recibiendo el resultado correcto.
Estoy usando una matriz de velocidades donde speeds = [86,87,88,86,87,85,86]
Cuando ejecuto:
std_dev = numpy.std(speeds)
print(std_dev)
Puedo obtener: 0.903507902905. Pero no quiero depender de numpy. Así que...
Mi aplicación es la siguiente:
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)
Ahora cuando ejecuto:
std_dev = get_std_dev(speeds)
print(std_dev)
Obtengo: [0]
pero estoy esperando 0.903507902905
Lo que me estoy perdiendo aquí?
1.0
.