Am încercat pentru a calcula abaterea standard în python, fără utilizarea de numpy
sau orice externe de bibliotecă, cu excepția math
. Vreau să ajung mai bine la scris algoritmi și fac asta ca un pic de "temele", ca să-mi îmbunătățesc aptitudinile de python. Scopul meu este de a traduce această formulă în python, dar nu sunt obtinerea de rezultatul corect.
Eu sunt, folosind o gamă largă de viteze de unde speeds = [86,87,88,86,87,85,86]
Atunci când am rula:
std_dev = numpy.std(speeds)
print(std_dev)
Am înțeles: 0.903507902905. Dar nu vreau să se bazeze pe numpy. Deci...
Punerea în aplicare este după cum urmează:
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)
Acum, când am rula:
std_dev = get_std_dev(speeds)
print(std_dev)
Am primi: [0]
dar aștept 0.903507902905
Ce am pierdut pe aici?
1.0
.