[SciPy-user] scipy_core bug in where
oliphant at ee.byu.edu
Thu Nov 17 22:42:06 CST 2005
Ted Horst wrote:
>I have discovered a bug in the where function in scipy_core.
> >>> from scipy import array, int16, where
> >>> a = array([1,2,3,-32766,4,5,-32766,6], dtype = int16)
> >>> where(a != -32766, a, a.max())
>array([ 65538, 229378, 262149, 6, 65538,
> 229378, 6, -2147352570])
>First, I was a little surprised that a.max() was type int32 rather than
>int16 (which causes the result to have dtype int32), but then a is
>clearly be misinterpreted.
Thanks for catching the bug. We'll look into it.
By the way, you can reduce in the type int16 if you
need to using a.max(rtype=int16) -- This was recently changed from
that default to avoid a different kind of surprise (wrap around effects).
This usage makes me regret somewhat the switch.
>It can be worked around like this:
where( a != -32766, a, a.max(rtype=int16))
Notice in this case you could also do
a[a==-32766] = a.max()
More information about the SciPy-user