<div dir="ltr"><div>Thanks Dave, that is exactly what I was looking for...<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 24, 2017 at 11:46 AM, Dave Allured - NOAA Affiliate <span dir="ltr"><<a href="mailto:dave.allured@noaa.gov" target="_blank">dave.allured@noaa.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Rasheed,<div><br></div><div>I think dim_cumsum and dim_cumsum_n with opt=0 are intended for this purpose.  There is no corresponding function for "avg".  However, simply dividing the result array from dim_cumsum by N should give the correct array result, with no extra "if" or "where" statement.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>--Dave</div></font></span><div><div class="h5"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 24, 2017 at 12:29 PM, Rashed Mahmood <span dir="ltr"><<a href="mailto:rashidcomsis@gmail.com" target="_blank">rashidcomsis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Hi Arne,<br></div><br></div><div>Thanks for trying to answer the question, however, the things you mentioned would add confusion and possibly wrong results. <br>Actually I know how to achieve what I want using a do loop. For example, let us say we have variable a = (ntimes,nlevel,nlat,nlon) and we want to do sum over time domain which can easily be done using: (dim_sum_n(a,0)), Now the results would be sum over all non-missing values of time1,time2,time2...timeN, which is correct. <br></div><div><br></div><div>But if I want to do sum ONLY when all of the values of time1,time2,time3...timeN are non-missing then we can do this:<br> </div><div> dimz = dimsizes(a)<br></div> b      = new(/dimz(1),dimz(2),dimz(3),f<wbr>loat)<br><div> b@_FillValue = a@_FillValue</div><div>  <br></div><div>  b(:,:,:) = 0.                    <br></div><div>  do n=0,dimz(0)-1</div><div>       b = b+a(n,:,:,:)<br></div><div>  end do<br></div><div><br></div><div>I just wanted to avoid the loop and use the "sum" function for efficiency. I hope this clarifies the question a bit more.</div><div><br></div><div>Cheers,</div><div>Rashed</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 24, 2017 at 3:01 AM, Arne Melsom <span dir="ltr"><<a href="mailto:arne.melsom@met.no" target="_blank">arne.melsom@met.no</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi!<div>Since 'music piano' replied, I thought I might chime in ;)<br><div>I'm pretty sure that no option(s) to functions allow you to do what you want.</div><div>So you'll need to write alternative functions yourself (perhaps not what you consider 'an easy way'...)</div><div>You may use something like</div><div><br></div><div><div>aDim = dimsizes(a)</div><div>orgFill = a@_FillValue</div><div>newFill = -min(abs(a)) - 1    ; make sure newFill is out of range and <0 </div><div>if (newFill .eq. orgFill) then  ; newFill must be different from orgFill</div><div>  newFill = newFill - 1</div><div>end if</div><div>newVar = ndtooned(a)</div><div>newVar@_FillValue = newFill</div><div>indx = ind(ismissing(newVar))</div><div>newVar(indx) = orgFill</div><div>newa = onedtond(newVar,aDim)</div><div><br></div><div>...and, if you later want to restore:</div><div>a = newa</div><div>a@_FillValue = orgFill</div></div><div><br></div><div>Hope this helps/clarifies!</div><div>Best regards,</div><div>Arne</div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_5616204217699992538m_7506295658437281984h5">2017-11-24 1:49 GMT+01:00 Rashed Mahmood <span dir="ltr"><<a href="mailto:rashidcomsis@gmail.com" target="_blank">rashidcomsis@gmail.com</a>></span>:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_5616204217699992538m_7506295658437281984h5"><div dir="ltr"><div><div><div>Hello all,<br></div>I am just wondering if there is an easy way to tell the "sum" and "avg" functions NOT ignore the missing values. Below lines clarify my question where I would like to see same values for c and d:<br><br>ncl 0> a = (/(/-9.,2,-9./),(/1,-9.,2./)/)<br>ncl 1> a@_FillValue = -9.                 <br>ncl 2> c = (a(0,:)+a(1,:))<br>ncl 3> d = dim_sum_n(a,0)<br>ncl 4> print("  "+c+ " ... "+d)<br>(0)       -9 ... 1<br>(1)       -9 ... 2<br>(2)       -9 ... 2<br><br></div>Thanks,<br></div>Rashed</div></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></div></div></div></div>
</blockquote></div><br></div>