import math import random import time import numpy import os # Comparison of speeds of various calculations os.system('cls') a = [random.random() for i in range(0,1000000)] # Compute sum using in-built function start=time.clock() x = sum(a) end = time.clock() print 'Simple sum time =', (end-start)*1000.0 x=0.0 # Compute sum using FOR loop start=time.clock() for i in range(0,len(a)): x = x + a[i] end = time.clock() print 'FOR loop time = ', (end-start)*1000.0 x=0.0 # Compute mean with in-built functions start=time.clock() x = sum(a)/len(a) end=time.clock() print 'Simple mean time =', (end-start)*1000.0 # Compute mean using numpt start=time.clock() x = numpy.mean(a) end = time.clock() print 'Numpy mean time =', (end-start)*1000.0 x= 0.0 # Compute standard deviation using in-built functions and loops start=time.clock() av = sum(a)/len(a) for i in range(0,len(a)): x = x + (a[i]-av)*(a[i]-av) sd = math.sqrt(x/len(a)) end = time.clock() print 'Simple sdev =',sd,' Which took ',(end-start)*1000.0 # Compute standard deviation using one-line for loop start=time.clock() av = sum(a)/len(a) sd = math.sqrt(sum( (a[i]-av)*(a[i]-av) for i in range(0,len(a))) / len(a) ) end=time.clock() print 'Simple sdev 2 =',sd,' Which took ',(end-start)*1000.0 # Computer standard deviation with numpy start = time.clock() x = numpy.std(a) end = time.clock() print 'Numpy sdev =',x,' Which took ',(end-start)*1000.0 x = 0.0 # Compute median from in-built functions start=time.clock() asort = sorted(a) x = asort[int(len(asort)/2.0)] end=time.clock() print 'Simple median =', x, 'Which took ',(end-start)*1000.0 # Compute median using numpy start=time.clock() x = numpy.median(a) end=time.clock() print 'Numpy median =', x, 'Which took', (end-start)*1000.0 l=[] # Find values s = time.clock() for i in range(0,len(a)): if a[i] > 0.5: l.append(i) e = time.clock() print 'Finding values :',(e-s)*1000.0 # Extract valyes s = time.clock() newa = (a[i] for i in l) e = time.clock() print 'Extracting values :',(e-s)*1000.0 # Delete values s= time.clock() a = numpy.delete(a,l) e = time.clock() print 'Deleting values :',(e-s)*1000.0 print len(l) # Summary # Numpy is usually faster, except for computing the mean, where it is # much slower. # One-line for loops are x3 faster than loops over multiple lines !