mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-18 09:54:33 +08:00
fix nanmean
This commit is contained in:
committed by
you-n-g
parent
8eb7a1fddc
commit
f7d7f1a223
@@ -397,9 +397,7 @@ class BaseOrderIndicator:
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def sum_all_indicators(
|
||||
cls, indicators: list, metrics: Union[str, List[str]], fill_value: float = None
|
||||
):
|
||||
def sum_all_indicators(cls, indicators: list, metrics: Union[str, List[str]], fill_value: float = None):
|
||||
"""sum indicators with the same metrics.
|
||||
and assign to the cls(BaseOrderIndicator).
|
||||
|
||||
@@ -569,9 +567,7 @@ class PandasOrderIndicator(BaseOrderIndicator):
|
||||
return pd.Series()
|
||||
|
||||
@staticmethod
|
||||
def sum_all_indicators(
|
||||
cls, indicators: list, metrics: Union[str, List[str]], fill_value=None
|
||||
):
|
||||
def sum_all_indicators(cls, indicators: list, metrics: Union[str, List[str]], fill_value=None):
|
||||
if isinstance(metrics, str):
|
||||
metrics = [metrics]
|
||||
for metric in metrics:
|
||||
@@ -656,10 +652,10 @@ class NumpySingleMetric(BaseSingleMetric):
|
||||
return len(self.metric)
|
||||
|
||||
def sum(self):
|
||||
return self.metric.sum()
|
||||
return np.nansum(self.metric)
|
||||
|
||||
def mean(self):
|
||||
return self.metric.mean()
|
||||
return np.nanmean(self.metric)
|
||||
|
||||
def count(self):
|
||||
return len(self.metric[~np.isnan(self.metric)])
|
||||
@@ -815,4 +811,3 @@ class NumpyOrderIndicator(BaseOrderIndicator):
|
||||
for i in range(len(metrics)):
|
||||
cls.row_tag[NumpyOrderIndicator.ROW_MAP[metrics[i]]] = 1
|
||||
cls.data[NumpyOrderIndicator.ROW_MAP[metrics[i]]] = metric_sum[i]
|
||||
|
||||
|
||||
@@ -330,7 +330,9 @@ class Indicator:
|
||||
|
||||
# sum inner order indicators with same metric.
|
||||
all_metric = ["inner_amount", "deal_amount", "trade_price", "trade_value", "trade_cost", "trade_dir"]
|
||||
self.order_indicator_cls.sum_all_indicators(self.order_indicator, inner_order_indicators, all_metric, fill_value=0)
|
||||
self.order_indicator_cls.sum_all_indicators(
|
||||
self.order_indicator, inner_order_indicators, all_metric, fill_value=0
|
||||
)
|
||||
|
||||
def func(trade_price, deal_amount):
|
||||
# trade_price is np.NaN instead of inf when deal_amount is zero.
|
||||
|
||||
Reference in New Issue
Block a user