Hello,<br><br>Consider this sample two columns of data:<br><br> 999999.9999 999999.9999<br> 999999.9999 999999.9999<br> 999999.9999 999999.9999<br> 999999.9999   1693.9069<br> 999999.9999   1676.1059<br> 999999.9999   1621.5875<br>
    651.8040       1542.1373<br>    691.0138       1650.4214<br>    678.5558       1710.7311<br>    621.5777    999999.9999<br>    644.8341    999999.9999<br>    696.2080    999999.9999<br clear="all"><br>Putting into this data into a file say &quot;sample.data&quot; and loading with:<br>
<br>a,b = np.loadtxt(&#39;sample.data&#39;, dtype=&quot;float&quot;).T<br><br>I[16]: a<br>O[16]: <br>array([  1.00000000e+06,   1.00000000e+06,   1.00000000e+06,<br>         1.00000000e+06,   1.00000000e+06,   1.00000000e+06,<br>
         6.51804000e+02,   6.91013800e+02,   6.78555800e+02,<br>         6.21577700e+02,   6.44834100e+02,   6.96208000e+02])<br><br>I[17]: b<br>O[17]: <br>array([ 999999.9999,  999999.9999,  999999.9999,    1693.9069,<br>
          1676.1059,    1621.5875,    1542.1373,    1650.4214,<br>          1710.7311,  999999.9999,  999999.9999,  999999.9999])<br><br>### interestingly, the second column is loaded as it is but a values reformed a little. Why this could be happening? Any idea? Anyways, back to masked arrays:<br>
<br>I[24]: am = ma.masked_values(a, value=999999.9999)<br><br>I[25]: am<br>O[25]: <br>masked_array(data = [-- -- -- -- -- -- 651.804 691.0138 678.5558 621.5777 644.8341 696.208],<br>             mask = [ True  True  True  True  True  True False False False False False False],<br>
       fill_value = 999999.9999)<br><br><br>I[30]: bm = ma.masked_values(b, value=999999.9999)<br><br>I[31]: am<br>O[31]: <br>masked_array(data = [-- -- -- -- -- -- 651.804 691.0138 678.5558 621.5777 644.8341 696.208],<br>
             mask = [ True  True  True  True  True  True False False False False False False],<br>       fill_value = 999999.9999)<br><br><br>So far so good. A few basic checks:<br><br>I[33]: am/bm<br>O[33]: <br>masked_array(data = [-- -- -- -- -- -- 0.422662755126 0.418689311712 0.39664667346 -- -- --],<br>
             mask = [ True  True  True  True  True  True False False False  True  True  True],<br>       fill_value = 999999.9999)<br><br><br>I[34]: mean(am/bm)<br>O[34]: 0.41266624676580849<br><br>Unfortunately, matplotlib.mlab&#39;s prctile cannot handle this division:<br>
<br>I[54]: prctile(am/bm, p=[5,25,50,75,95])<br>O[54]: <br>array([  3.96646673e-01,   6.21577700e+02,   1.00000000e+06,<br>         1.00000000e+06,   1.00000000e+06])<br><br><br>This also results with wrong looking box-and-whisker plots.<br>
<br><br>Testing further with scipy.stats functions yields expected correct results:<br><br>I[55]: stats.scoreatpercentile(am/bm, per=5)<br>O[55]: 0.40877012449846228<br><br>I[49]: stats.scoreatpercentile(am/bm, per=25)<br>
O[49]: <br>masked_array(data = --,<br>             mask = True,<br>       fill_value = 1e+20)<br><br>I[56]: stats.scoreatpercentile(am/bm, per=95)<br>O[56]: <br>masked_array(data = --,<br>             mask = True,<br>       fill_value = 1e+20)<br>
<br><br>Any confirmation?<br><br><br><br><br><br><br><br>-- <br>Gökhan<br>