You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Using a trick that Robert Kern recently posted to the numpy list makes the identity function much faster.
Current version:
def identity(n, dtype=None):
a = array([1]+n*[0],dtype=dtype)
b = empty((n,n),dtype=dtype)
b.flat = a
return b
Proposed version:
def myidentity(n, dtype=None):
a = zeros((n,n), dtype=dtype)
a.flat[::n+1] = 1
return a
timeit identity(1)
100000 loops, best of 3: 14.9 µs per loop
timeit identity(10)
10000 loops, best of 3: 20 µs per loop
timeit identity(100)
1000 loops, best of 3: 696 µs per loop
timeit identity(1000)
10 loops, best of 3: 73.6 ms per loop
timeit myidentity(1)
100000 loops, best of 3: 6.57 µs per loop
timeit myidentity(10)
100000 loops, best of 3: 7.08 µs per loop
timeit myidentity(100)
100000 loops, best of 3: 16.4 µs per loop
timeit myidentity(1000)
100 loops, best of 3: 5.92 ms per loop
It would also speed up the functions that use identity (for example np.linalg.inv).
The text was updated successfully, but these errors were encountered:
Original ticket http://projects.scipy.org/numpy/ticket/1193 on 2009-08-12 by @kwgoodman, assigned to unknown.
Using a trick that Robert Kern recently posted to the numpy list makes the identity function much faster.
Current version:
def identity(n, dtype=None):
a = array([1]+n*[0],dtype=dtype)
b = empty((n,n),dtype=dtype)
b.flat = a
return b
Proposed version:
def myidentity(n, dtype=None):
a = zeros((n,n), dtype=dtype)
a.flat[::n+1] = 1
return a
It would also speed up the functions that use identity (for example np.linalg.inv).
The text was updated successfully, but these errors were encountered: