fork download
  1. import numpy as np
  2. import time
  3.  
  4. def my_unit_circle(r):
  5. d = 2*r + 1
  6. rx, ry = d/2, d/2
  7. x, y = np.indices((d, d))
  8. return (np.abs(np.hypot(rx - x, ry - y)-r) < 0.5).astype(int)
  9.  
  10. def unit_circle_vectorized(r):
  11. A = np.arange(-r,r+1)**2
  12. dists = np.sqrt(A[:,None] + A)
  13. return (np.abs(dists-r)<0.5).astype(int)
  14.  
  15. t0 = time.time()
  16. out1 = my_unit_circle(100)
  17. elapsed_time1 = (time.time() - t0 )
  18.  
  19. t0 = time.time()
  20. out1 = unit_circle_vectorized(100)
  21. elapsed_time2 = (time.time() - t0 )
  22.  
  23. print elapsed_time1
  24. print elapsed_time2
  25.  
Success #stdin #stdout 0.05s 25368KB
stdin
Standard input is empty
stdout
0.00172019004822
0.00104880332947