@@ -761,15 +761,15 @@ def get_median(x, _mask=None):
761
761
res = np .nanmedian (x [_mask ])
762
762
return res
763
763
764
- values , mask , dtype , _ , _ = _get_values (values , skipna , mask = mask )
764
+ values , mask , dtype , _ , _ = _get_values (values , skipna , mask = mask , fill_value = 0 )
765
765
if not is_float_dtype (values .dtype ):
766
766
try :
767
767
values = values .astype ("f8" )
768
768
except ValueError as err :
769
769
# e.g. "could not convert string to float: 'a'"
770
770
raise TypeError (str (err )) from err
771
- if mask is not None :
772
- values [mask ] = np .nan
771
+ if mask is not None :
772
+ values [mask ] = np .nan
773
773
774
774
notempty = values .size
775
775
@@ -1043,8 +1043,11 @@ def nansem(
1043
1043
if not is_float_dtype (values .dtype ):
1044
1044
values = values .astype ("f8" )
1045
1045
1046
+ if not skipna and mask is not None and mask .any ():
1047
+ return np .nan
1048
+
1046
1049
count , _ = _get_counts_nanvar (values .shape , mask , axis , ddof , values .dtype )
1047
- var = nanvar (values , axis = axis , skipna = skipna , ddof = ddof )
1050
+ var = nanvar (values , axis = axis , skipna = skipna , ddof = ddof , mask = mask )
1048
1051
1049
1052
return np .sqrt (var ) / np .sqrt (count )
1050
1053
@@ -1225,6 +1228,8 @@ def nanskew(
1225
1228
if skipna and mask is not None :
1226
1229
values = values .copy ()
1227
1230
np .putmask (values , mask , 0 )
1231
+ elif not skipna and mask is not None and mask .any ():
1232
+ return np .nan
1228
1233
1229
1234
mean = values .sum (axis , dtype = np .float64 ) / count
1230
1235
if axis is not None :
@@ -1313,6 +1318,8 @@ def nankurt(
1313
1318
if skipna and mask is not None :
1314
1319
values = values .copy ()
1315
1320
np .putmask (values , mask , 0 )
1321
+ elif not skipna and mask is not None and mask .any ():
1322
+ return np .nan
1316
1323
1317
1324
mean = values .sum (axis , dtype = np .float64 ) / count
1318
1325
if axis is not None :
0 commit comments