[Numpy-discussion] How do I do this?

Christopher Barker Chris.Barker@noaa....
Fri Aug 29 23:02:59 CDT 2008


Alan G Isaac wrote:
>>>> Alan G Isaac wrote:
>>>>> Does this do what you want? 
>>>>> idx = np.abs(a)<min_value 
>>>>> a[idx] = min_value 
> 
> Christopher Barker wrote:
>> -1 should go to -2
> 
> ok then:
> a[idx] = min_value*np.sign(a[idx])
> I think that's what you are saying?

nope:

 >>> a = np.array((0, 1, -1, 2, 3, -5,))
 >>> idx = np.abs(a)<min_value
 >>> a = np.array((0, 1, -1, 2, 3, -5,))
 >>> a
array([ 0,  1, -1,  2,  3, -5])

0 should go to 2 --it's not, because sign(0) == 0, so the 2 gets turned 
to zero, my original problem.

Frankly, as I've only seen sign() used for this sort of thing, it makes 
me think that sign(0) really should be 1 -- the identity -- I know that 
0 is neither positive nor negative, but as it is often used in this way, 
it would be more useful for sign(0) to be the identity.

I'm not advocating a change in numpy, I'm sure this is established 
standard, but it does seem I need to special case zero. (Or fudge it by 
adding an epsilon, as Keith suggested.

thanks all,
-Chris



-- 
Christopher Barker, Ph.D.
Oceanographer

NOAA/OR&R/HAZMAT         (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception


More information about the Numpy-discussion mailing list