Próbuję obliczyć odchylenie standardowe w pythonie bez użycia numpy
lub jakiejkolwiek zewnętrznej biblioteki, za wyjątkiem math
. Chcę stać się lepszy w pisaniu algorytmów i po prostu robię to jako "zadania domowego", doskonaląc swoje umiejętności pracy w pythonie. Mój cel-przenieść tę formułę w pythonie, ale nie otrzymuję prawidłowego wyniku.
Używam wielu prędkości, gdzie speeds = [86,87,88,86,87,85,86]
Kiedy biegnę:
std_dev = numpy.std(speeds)
print(std_dev)
Otrzymuję: 0,903507902905. Ale ja nie chcę polegać na глупышку. Tak...
Moja implementacja jest w następujący sposób:
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, gdy używam:
std_dev = get_std_dev(speeds)
print(std_dev)
Otrzymuję: [0]
ale spodziewam się 0,903507902905
Co ja tutaj nie dostrzegam?
1.0
.