[Numpy-discussion] My identity
Keith Goodman
kwgoodman@gmail....
Mon Jul 20 11:32:03 CDT 2009
On Mon, Jul 20, 2009 at 9:03 AM, Charles R
Harris<charlesr.harris@gmail.com> wrote:
>
>
> On Mon, Jul 20, 2009 at 9:39 AM, Keith Goodman <kwgoodman@gmail.com> wrote:
>>
>> Using a trick that Robert Kern recently posted to the 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). And it would make identity faster than eye.
>>
>> Are there any corner cases that the new version doesn't handle? Any
>> other issues?
>
> I believe r7130 made the change.
I don't see it here (r7153):
http://svn.scipy.org/svn/numpy/trunk/numpy/core/numeric.py
Am I looking in the wrong place?
More information about the NumPy-Discussion
mailing list