[Numpy-discussion] load from text files Pull Request Review

Christopher Jordan-Squire cjordan1@uw....
Wed Sep 14 18:26:43 CDT 2011


On Wed, Sep 14, 2011 at 5:30 PM, Christopher Barker
<Chris.Barker@noaa.gov> wrote:
> On 9/14/11 2:41 PM, Benjamin Root wrote:
>> Are you sure the f2 code works?  a.resize() takes only a shape tuple.  As
>> coded, you should get an exception.
>
> wow, what an idiot!
>
> I think I just timed how long it takes to raise that exception...
>
> And when I fix that, I get a memory error.
>
> When I fix that, I find that f3() wasn't doing the right thing. What an
> astonishing lack of attention on my part!
>
> Here it is again, working, I hope!
>
> In [107]: %timeit f1()
> 10 loops, best of 3: 50.7 ms per loop
>
> In [108]: %timeit f2()
> 1000 loops, best of 3: 719 us per loop
>
> In [109]: %timeit f3()
> 100 loops, best of 3: 19 ms per loop
>
>
> So:
> numpy.resize() is the slowest
> numpy.empty+ numpy.append() is faster
> numpy.ndarray.resize() is the fastest
>
> Which matches my expectations, for once!
>

Good catch! I didn't think the difference between np.resize and
ndarray.resize would matter. (And I was getting inscrutable errors
when I called ndarray.resize that told me to use np.resize instead.)

-Chris JS


> -Chris
> The code:
>
> #!/usr/bin/env python
>
> """
> test_resize
>
> A test of various numpy re-sizing options
>
> """
>
> import numpy
>
> def f1():
>     """
>     numpy.resize
>     """
>
>     extra = 100
>     l = extra
>     a = numpy.zeros((l,))
>     for i in xrange(100):
>         l += extra
>         a = numpy.resize(a, (l,) )
>
>     return a
>
> def f2():
>     """
>     numpy.ndarray.resize
>     """
>
>     extra = 100
>     l = extra
>     a = numpy.zeros((l,))
>     for i in xrange(100):
>         l += extra
>         a.resize( (l,) )
>
>     return a
>
> def f3():
>     """
>     numpy.empty + append
>     """
>
>     extra = 100
>     l = extra
>     a = numpy.zeros((l,))
>     for i in xrange(100):
>         b = numpy.empty((extra,))
>         a = numpy.append(a, b)
>     return a
>
> a1 = f1()
> a2 = f2()
> a3 = f3()
>
> if a1.shape == a2.shape == a3.shape:
>     print "they are all returning the same size array"
> else:
>     print "Something is wrong!"
>
>
> --
> Christopher Barker, Ph.D.
> Oceanographer
>
> Emergency Response Division
> NOAA/NOS/OR&R            (206) 526-6959   voice
> 7600 Sand Point Way NE   (206) 526-6329   fax
> Seattle, WA  98115       (206) 526-6317   main reception
>
> Chris.Barker@noaa.gov
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>


More information about the NumPy-Discussion mailing list