import numpy as np
import time
def my_unit_circle(r):
d = 2*r + 1
rx, ry = d/2, d/2
x, y = np.indices((d, d))
return (np.abs(np.hypot(rx - x, ry - y)-r) < 0.5).astype(int)
def unit_circle_vectorized(r):
A = np.arange(-r,r+1)**2
dists = np.sqrt(A[:,None] + A)
return (np.abs(dists-r)<0.5).astype(int)
t0 = time.time()
out1 = my_unit_circle(100)
elapsed_time1 = (time.time() - t0 )
t0 = time.time()
out1 = unit_circle_vectorized(100)
elapsed_time2 = (time.time() - t0 )
print elapsed_time1
print elapsed_time2
aW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCB0aW1lCgpkZWYgbXlfdW5pdF9jaXJjbGUocik6CiAgICBkID0gMipyICsgMQogICAgcngsIHJ5ID0gZC8yLCBkLzIKICAgIHgsIHkgPSBucC5pbmRpY2VzKChkLCBkKSkKICAgIHJldHVybiAobnAuYWJzKG5wLmh5cG90KHJ4IC0geCwgcnkgLSB5KS1yKSA8IDAuNSkuYXN0eXBlKGludCkKICAgCmRlZiB1bml0X2NpcmNsZV92ZWN0b3JpemVkKHIpOgogICAgQSA9IG5wLmFyYW5nZSgtcixyKzEpKioyCiAgICBkaXN0cyA9IG5wLnNxcnQoQVs6LE5vbmVdICsgQSkKICAgIHJldHVybiAobnAuYWJzKGRpc3RzLXIpPDAuNSkuYXN0eXBlKGludCkKIAp0MCA9IHRpbWUudGltZSgpCm91dDEgPSBteV91bml0X2NpcmNsZSgxMDApCmVsYXBzZWRfdGltZTEgID0gKHRpbWUudGltZSgpIC0gdDAgKQoKdDAgPSB0aW1lLnRpbWUoKQpvdXQxID0gdW5pdF9jaXJjbGVfdmVjdG9yaXplZCgxMDApCmVsYXBzZWRfdGltZTIgID0gKHRpbWUudGltZSgpIC0gdDAgKQoKcHJpbnQgZWxhcHNlZF90aW1lMQpwcmludCBlbGFwc2VkX3RpbWUyCg==