Dear all,<br><br>I tried to capture the zero divide error when I divide a masked array by another. It seems that np.seterr is not working for masked array? <br>when I do np.divide on two masked array, it directly put the zero divides part as being masked. The np.seterr works if the two arrays for dividing are not masked arrays.<br>
could anyone explain? thanks!!<br><br>np.__version__ = 1.6.2<br><br>In [87]: np.seterr(all='print')<br>Out[87]: {'divide': 'print', 'invalid': 'print', 'over': 'print', 'under': 'print'}<br>
<br>In [88]: a = np.arange(8,dtype=float).reshape(2,4)<br><br>In [89]: b = np.ma.masked_less(a,4)<br><br>In [90]: b[1,-2:] = 0.<br><br>In [91]: b<br>Out[91]: <br>masked_array(data =<br> [[-- -- -- --]<br> [4.0 5.0 0.0 0.0]],<br>
             mask =<br> [[ True  True  True  True]<br> [False False False False]],<br>       fill_value = 1e+20)<br><br><br>In [92]: c = a.copy()<br><br>In [93]: c[1,-2:] = 0.<br><br>In [94]: c<br>Out[94]: <br>array([[ 0.,  1.,  2.,  3.],<br>
       [ 4.,  5.,  0.,  0.]])<br><br>In [95]: np.divide(a,b)<br>Warning: divide by zero encountered in divide<br>Out[95]: <br>masked_array(data =<br> [[-- -- -- --]<br> [1.0 1.0 -- --]],<br>             mask =<br> [[ True  True  True  True]<br>
 [False False  True  True]],<br>       fill_value = 1e+20)<br><br><br>In [96]: np.divide(a,c)<br>Warning: divide by zero encountered in divide<br>Out[96]: <br>array([[ nan,   1.,   1.,   1.],<br>       [  1.,   1.,  inf,  inf]])<br>
<br>Chao<br>-- <br><div>***********************************************************************************</div>
<div>Chao YUE<br>Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL)<br>UMR 1572 CEA-CNRS-UVSQ<br>Batiment 712 - Pe 119<br>91191 GIF Sur YVETTE Cedex</div>
<div>Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16<br></div>

<div>************************************************************************************</div><br>