@@ -1688,24 +1688,29 @@ def filled(
1688
1688
c .norm = Normalize (vmin = vmin , vmax = vmax )
1689
1689
return c
1690
1690
1691
- def bins_stat (self , xname , bins = None , yname = None , method = None ):
1691
+ def bins_stat (self , xname , bins = None , yname = None , method = None , mask = None ):
1692
1692
"""
1693
1693
:param str,array xname: variable to compute stats on
1694
1694
:param array, None bins: bins to perform statistics, if None bins = arange(variable.min(), variable.max() + 2)
1695
- :param None,str yname: variable used to apply method
1695
+ :param None,str,array yname: variable used to apply method
1696
1696
:param None,str method: If None method counts the number of observations in each bin, can be "mean", "std"
1697
+ :param None,array(bool) mask: If defined use only True position
1697
1698
:return: x array and y array
1698
1699
:rtype: array,array
1699
1700
1700
1701
.. minigallery:: py_eddy_tracker.EddiesObservations.bins_stat
1701
1702
"""
1702
1703
v = self [xname ] if isinstance (xname , str ) else xname
1704
+ if mask is not None :
1705
+ v = v [mask ]
1703
1706
if bins is None :
1704
1707
bins = arange (v .min (), v .max () + 2 )
1705
1708
y , x = hist_numba (v , bins = bins )
1706
1709
x = (x [1 :] + x [:- 1 ]) / 2
1707
1710
if method == "mean" :
1708
- y_v = self [yname ]
1711
+ y_v = self [yname ] if isinstance (yname , str ) else yname
1712
+ if mask is not None :
1713
+ y_v = y_v [mask ]
1709
1714
y_ , _ = histogram (v , bins = bins , weights = y_v )
1710
1715
y = y_ / y
1711
1716
return x , y
0 commit comments