Using Python 2.1 and Numeric 20.2.1 on Redhat Linux 7.1
Shouldn't masked arrays preserve the fill value of their operands, if
both operands have the same fill value? Otherwise, if I want to
preserve the value of the fill_value, I have to write expressions like:
d=masked_values((a+b),a.fill_value())
Here's a demonstration of the problem:
>>> a = masked_values((1.0,2.0,3.0,4.0,-999.0), -999)
>>> b = masked_values((-999.0,1.0,2.0,3.0,4.0), -999)
>>> a
array(data =
[ 1., 2., 3., 4.,-999.,],
mask =
[0,0,0,0,1,],
fill_value=-999)
>>> b
array(data =
[-999., 1., 2., 3., 4.,],
mask =
[1,0,0,0,0,],
fill_value=-999)
>>> c=a+b
>>> c
array(data =
[ 1.00000002e+20, 3.00000000e+00, 5.00000000e+00, 7.00000000e+00,
1.00000002e+20,],
mask =
[1,0,0,0,1,],
fill_value=[ 1.00000002e+20,])
>>> d=masked_values((a+b),a.fill_value())
>>> d
array(data =
[-999., 3., 5., 7.,-999.,],
mask =
[1,0,0,0,1,],
fill_value=-999)
--
Joe VanAndel
National Center for Atmospheric Research
http://www.atd.ucar.edu/~vanandel/
Internet: van...@uc...
|