[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