Snažím sa vypočítať štandardnú odchýlku v jazyku python bez použitia numpy
alebo akékoľvek iné externé knižnice s výnimkou math
. Chcem získať lepšie písanie algoritmy a som len robiť to ako trochu "domáce úlohy", ako som zlepšiť moje python zručnosti. Mojím cieľom je preložiť tento vzorec do python, ale nie som dostať správny výsledok.
Ja som pomocou poľa rýchlosti, kde speeds = [86,87,88,86,87,85,86]
Keď som sa spustiť:
std_dev = numpy.std(speeds)
print(std_dev)
Som si: 0.903507902905. Ale nechcem sa spoliehať na numpy. Takže...
Môj vykonávanie je nasledovný:
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)
Teraz, keď som sa spustiť:
std_dev = get_std_dev(speeds)
print(std_dev)
Som si: [0]
ale ja som očakával 0.903507902905
Čo mám chýba tu?
1.0
.