Sto cercando di calcolare la deviazione standard di python senza l'utilizzo di numpy
o qualsiasi libreria esterna tranne che per math
. Voglio arrivare meglio a scrivere algoritmi e sto facendo questo come un po ' di "compiti a casa" come migliorare il mio python competenze. Il mio obiettivo è quello di tradurre questa formula in python, ma non sono sempre il risultato corretto.
Sto usando un array di velocità in cui speeds = [86,87,88,86,87,85,86]
Quando ho eseguito:
std_dev = numpy.std(speeds)
print(std_dev)
Ricevo: 0.903507902905. Ma non voglio fare affidamento su di numpy. Quindi...
La mia implementazione è il seguente:
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)
Ora, quando ho eseguito:
std_dev = get_std_dev(speeds)
print(std_dev)
Ottengo: [0]
ma sono in attesa di ricevere 0.903507902905
Quello che mi manca qui?
1.0
.