[Numpy-discussion] Setting small numbers to zero.

Keith Goodman kwgoodman@gmail....
Wed Mar 17 14:18:58 CDT 2010


On Wed, Mar 17, 2010 at 12:08 PM, Robert Kern <robert.kern@gmail.com> wrote:
> On Wed, Mar 17, 2010 at 14:03, Keith Goodman <kwgoodman@gmail.com> wrote:
>> On Wed, Mar 17, 2010 at 12:04 PM, Christopher Barker
>> <Chris.Barker@noaa.gov> wrote:
>>> Friedrich Romstedt wrote:
>>>> Code:
>>>>
>>>> import numpy
>>>> import time
>>>>
>>>> a = numpy.random.random((2000, 2000))
>>>>
>>>> start = time.time()
>>>> a[abs(a) < 10] = 0
>>>> stop = time.time()
>>>
>>> I highly recommend ipython and its "timeit" function --much better for this.
>>
>> One of the methods, the fast one, uses an in-place operation, so
>> timeit won't work. But for cases where timeit does work, yes, it is
>> great.
>
> You need to provide correct setup code.
>
> from timeit import Timer
>
> t = Timer("a[abs(a) < 0.1] = 0", "import
> numpy;a=numpy.random.random((2000, 2000))")
> t.repeat()

BTW, is there some way to get the above to give the same output (and
same number of runs etc) as

timeit a[abs(a) < 0.1] = 0


More information about the NumPy-Discussion mailing list