# Nanmean for 3d array

**URL:** <https://discourse.julialang.org/t/nanmean-for-3d-array/62569>\
**Category:** General Usage\
**Tags:** question\
**Created:** [June 8, 2021, 9:32am UTC](https://discourse.julialang.org/t/nanmean-for-3d-array/62569 "2021-06-08T09:32:24Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![kongdd](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kongdd/32/17058_2.png) [@kongdd](https://discourse.julialang.org/u/kongdd)\
**Post date:** [June 8, 2021, 9:32am UTC](https://discourse.julialang.org/t/nanmean-for-3d-array/62569/1 "2021-06-08T09:32:24Z")

</div>

Does julia have the nanmean function for 3d array, just like what in MATLAB [(Not recommended) Mean, ignoring NaN values - MATLAB nanmean](https://www.mathworks.com/help/stats/nanmean.html)?

---

<div class="post-metadata">

**Author:** ![Fliks](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fliks/32/2494_2.png) [@Fliks](https://discourse.julialang.org/u/Fliks)\
**Post date:** [June 8, 2021, 10:15am UTC](https://discourse.julialang.org/t/nanmean-for-3d-array/62569/2 "2021-06-08T10:15:10Z")

</div>

You can use the nanmean function from NaNStatistics.jl

[https://brenhinkeller.github.io/NaNStatistics.jl/dev/#NaNStatistics.nanmean-Tuple{Any}](https://brenhinkeller.github.io/NaNStatistics.jl/dev/#NaNStatistics.nanmean-Tuple%7BAny%7D)

---

<div class="post-metadata">

**Author:** ![kongdd](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kongdd/32/17058_2.png) [@kongdd](https://discourse.julialang.org/u/kongdd)\
**Post date:** [June 9, 2021, 4:01am UTC](https://discourse.julialang.org/t/nanmean-for-3d-array/62569/3 "2021-06-09T04:01:52Z")

</div>

This package works for Nan. But not for missing. Any solution？

```julia
using NaNStatistics
A = [1:10; fill(missing,10)]
nanmean(A)
# missing

```

---

<div class="post-metadata">

**Author:** ![fabiangans](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fabiangans/32/2624_2.png) [@fabiangans](https://discourse.julialang.org/u/fabiangans)\
**Post date:** [June 9, 2021, 7:22am UTC](https://discourse.julialang.org/t/nanmean-for-3d-array/62569/4 "2021-06-09T07:22:26Z")

</div>

You can define your own version of missmean which checks for nans and missings and works along any dimension like this:

```julia
misssum((s,n), x) = (x===missing || isnan(x)) ? (s,n) : (s+x, n+1)
division((s,n)) = s/n
missmean(a;dims=:) = division.(reduce(misssum, a, init = (zero(eltype(a)), 0), dims=dims))

#And then call it on your data
A = [1.0:10.0 fill(missing,10)]
A[1,2] = NaN
missmean(A, dims=2)

```
