I have a list with nan
entries
import numpy as np
a = [1, 2, 3, 4, 5, 6]
b = [nan, 2, 3, nan, 5, 6]
c = [nan, 2, 3, 4, 5, 6]
data = [a,b,c]
I want to find the mean of items in the list by summing the ith entries in the list and dividing by the mean of all its non-NaN elements.
mean = np.mean(data)
doesn't work since nan entries are found.
For instance in MATLAB mean([a;b;c],'omitnan')
option is found.
Is there a similar function in Python?
Suggestions will be really helpful
CodePudding user response:
I think it is answer that you looking for.
np.nanmean(data,axis=1)
The np.nanmean
is used to calculate the mean of array ignoring the NaN value.
https://www.geeksforgeeks.org/python-numpy-nanmean-function/
CodePudding user response:
Numpy offers a convenient function for that! Namely, nanmean()
, that ignores any np.nan
entries when computing the mean, i.e.
import numpy as np
np.nanmean(a)
>4.0
np.nanmean(b)
>4.0
np.nanmean(c)
>4.0
Moreover, nansum()
, nanmin()
, nanmax()
etc. offer nan-insensitive analogues to sum()
, min()
, and max()
.