Skip to content

Instantly share code, notes, and snippets.

@priteshgohil
Created September 10, 2020 11:47
Show Gist options
  • Save priteshgohil/ea3fd8fc89f0112d09fe8cd77de79067 to your computer and use it in GitHub Desktop.
Save priteshgohil/ea3fd8fc89f0112d09fe8cd77de79067 to your computer and use it in GitHub Desktop.
Performance on calculating mean
import time
import statistics
import numpy as np
def mean_normal(list_data):
"""
Calculate mean of python list normaly
input: list of int or float
output: mean value
"""
start = time.time()
avg = sum(list_data)/len(list_data)
end = time.time()
print("avg: {} & Time taken by mean_normal: {:.5f} sec".format(avg, end-start))
return avg
def mean_statistics(list_data):
"""
Calculate mean of python list using statistics lib
input: list of int or float
output: mean value
"""
start = time.time()
avg = statistics.mean(list_data)
end = time.time()
print("avg: {} & Time taken by mean_statistics: {:.5f} sec".format(avg, end-start))
return avg
def mean_numpy_with_list(list_data):
"""
Calculate mean of python list using numpy lib
input: list of int or float
output: mean value
"""
start = time.time()
avg = np.mean(list_data)
end = time.time()
print("avg: {} & Time taken by mean_numpy_with_list: {:.5f} sec".format(avg, end-start))
return avg
def mean_numpy_with_array(array_data):
"""
Calculate mean of numpy array using numpy lib
input: 1-d numpy array
output: mean value
"""
start = time.time()
avg = np.mean(array_data)
end = time.time()
print("avg: {} & Time taken by mean_numpy_with_array: {:.5f} sec".format(avg, end-start))
return avg
if __name__ == '__main__':
# Test with int range
data = list(range(3000000))
mean_normal(data)
mean_statistics(data)
mean_numpy_with_list(data)
mean_numpy_with_array(np.array(data))
# Test with float range
data = list(np.linspace(500,1000,3000000))
mean_normal(data)
mean_statistics(data)
mean_numpy_with_list(data)
mean_numpy_with_array(np.array(data))
@priteshgohil
Copy link
Author

For my system, the following are results,

  1. Test with int range
avg: 1499999.5 & Time taken by mean_normal: 0.11733 sec
avg: 1499999.5 & Time taken by mean_statistics: 2.50410 sec
avg: 1499999.5 & Time taken by mean_numpy_with_list: 0.28698 sec
avg: 1499999.5 & Time taken by mean_numpy_with_array: 0.00589 sec
  1. Test with float range
avg: 749.9999999999993 & Time taken by mean_normal: 0.29277 sec
avg: 750.0 & Time taken by mean_statistics: 5.58369 sec
avg: 749.9999999999997 & Time taken by mean_numpy_with_list: 0.32793 sec
avg: 749.9999999999997 & Time taken by mean_numpy_with_array: 0.01073 sec

To Do:
[ ] Add graph of time vs length of the list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment