Fast(er) standard deviation calculation (compared to the standard library) for Python [experimental]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

69 lines
1.3 KiB

import timeit
import statistics
import fast_stdev
import random
import numpy
import sys
print("Python", sys.version, "\n")
iterations = 1000
numbers = [1, 2, 4]
numbers = [random.randint(1, 100) for i in range(1000)]
numbers = [random.random() for i in range(1000)]
np_array = numpy.array(numbers)
def time(code):
time = round(
1000000
* timeit.timeit(
code,
number=iterations,
globals=globals(),
)
/ iterations
)
return "(time: " + (str(time)).rjust(4, " ") + "μs)"
print("Sample standard deviation:")
print(
" stdlib : "
+ str(statistics.stdev(numbers)).ljust(20, " ")
+ time("statistics.stdev(numbers)")
)
print(
" fast_stdev : "
+ str(fast_stdev.stdev(numbers)).ljust(20, " ")
+ time("fast_stdev.stdev(numbers)")
)
print(
" numpy : "
+ str(np_array.std(ddof=1)).ljust(20, " ")
+ time("np_array.std(ddof=1)")
)
print("\nPopulation standard deviation:")
print(
" stdlib : "
+ str(statistics.pstdev(numbers)).ljust(20, " ")
+ time("statistics.pstdev(numbers)")
)
print(
" fast_stdev : "
+ str(fast_stdev.pstdev(numbers)).ljust(20, " ")
+ time("fast_stdev.pstdev(numbers)")
)
print(
" numpy : "
+ str(np_array.std()).ljust(20, " ")
+ time("np_array.std()")
)