On Sunday 01 June 2008 11:22:05 Tony Yu wrote: > array + masked_array > outputs a masked array
That's expected: you create a new object from two objects (array and masked_array), the latter has a higher priority than the former, you end up with a masked array > array += masked_array > outputs an array. That's expected as well: you modify the values of array in place, but don't modify its type. Similarly, masked_array += array gives a masked array. > *However*, if the right side were an old masked array, the masked > values would not be added to the output array. With the new masked > arrays, the data from the masked array is added regardless of whether > the value is masked (example, below). With oldnumeric.ma, masked_array has to be converted to a ndarray. During the conversion, the masked data are filled with a value that depends on the context of the call: here, the function called is add, and the corresponding filling value is 0. Your line normal += masked_array is then equivalent to normal += [0,1] With numpy.ma, masked_array is already recognized as a ndarray, and no conversion takes place. In particular, the values of masked_array are not filled. You should use normal += masked_array.filled(0) _______________________________________________ Numpy-discussion mailing list [email protected] http://projects.scipy.org/mailman/listinfo/numpy-discussion
