Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from scipy.sparse import diags
- def standard(n):
- offsets = np.arange(-(n+1)//2,(n+1)//2+2)
- values = 1/offsets
- values[n//2+1] = 8
- return diags(values,offsets,shape=(n-1,n-1)).toarray()
- def selectmgrid(n):
- fill = lambda x, y: np.select([x==y, x!=5], [8, 1/(x+y)])
- return fill(*np.mgrid[1:n, 1:n])
- def vectmgrid(n):
- fill_array = np.vectorize(lambda x, y: 1/(x+y) if x!=y else 8.0)
- return fill_array(*np.mgrid[1:n, 1:n])
- def mixedmgrid(n):
- fill_it = lambda x, y: 1/(x+y) # removing the if else statement
- likelihood = fill_it(*np.mgrid[1:n, 1:n])
- np.fill_diagonal(likelihood, 8)
- return likelihood
- n = 100
- # print(standard(n),'\n')
- # print(selectmgrid(n),'\n')
- # print(vectmgrid(n),'\n')
- # print(mixedmgrid(n),'\n')
- print('standard ', end='')
- %timeit(standard(n))
- print('selectmgrid ', end='')
- %timeit(selectmgrid(n))
- print('vectmgrid ', end='')
- %timeit(vectmgrid(n))
- print('mixedmgrid ', end='')
- %timeit(mixedmgrid(n))
- standard 1000 loops, best of 3: 1.73 ms per loop
- selectmgrid 1000 loops, best of 3: 319 µs per loop
- vectmgrid 100 loops, best of 3: 2.58 ms per loop
- mixedmgrid 1000 loops, best of 3: 209 µs per loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement