[Numpy-discussion] Setting small numbers to zero.
robert.kern at gmail.com
Wed Mar 17 15:11:22 EDT 2010
On Wed, Mar 17, 2010 at 14:07, <josef.pktd at gmail.com> wrote:
> On Wed, Mar 17, 2010 at 3:01 PM, Robert Kern <robert.kern at gmail.com> wrote:
>> On Wed, Mar 17, 2010 at 14:04, Christopher Barker <Chris.Barker at noaa.gov> wrote:
>>> Friedrich Romstedt wrote:
>>>> 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.
>>> And numpy.clip() may be helpful here,
>> No, it's not.
> why not?
> np.clip([-1,-5,1,1e90,np.inf, np.nan], 0, np.inf)
> array([ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
> 1.00000000e+90, Inf, NaN])
Why do you think that's equivalent? That just clips negative numbers
to 0. The question is how to set numbers of small absolute magnitude
"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
-- Umberto Eco
More information about the NumPy-Discussion