@@ -1688,24 +1688,29 @@ def filled(
16881688 c .norm = Normalize (vmin = vmin , vmax = vmax )
16891689 return c
16901690
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 ):
16921692 """
16931693 :param str,array xname: variable to compute stats on
16941694 :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
16961696 :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
16971698 :return: x array and y array
16981699 :rtype: array,array
16991700
17001701 .. minigallery:: py_eddy_tracker.EddiesObservations.bins_stat
17011702 """
17021703 v = self [xname ] if isinstance (xname , str ) else xname
1704+ if mask is not None :
1705+ v = v [mask ]
17031706 if bins is None :
17041707 bins = arange (v .min (), v .max () + 2 )
17051708 y , x = hist_numba (v , bins = bins )
17061709 x = (x [1 :] + x [:- 1 ]) / 2
17071710 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 ]
17091714 y_ , _ = histogram (v , bins = bins , weights = y_v )
17101715 y = y_ / y
17111716 return x , y
0 commit comments