From 0a776a0e647204c1ae5461a1d8f55b6bea1a6d41 Mon Sep 17 00:00:00 2001 From: "J. R. Angevaare" Date: Mon, 24 Feb 2025 16:24:44 +0100 Subject: [PATCH] weighted average --- optim_esm_tools/analyze/region_calculation.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/optim_esm_tools/analyze/region_calculation.py b/optim_esm_tools/analyze/region_calculation.py index 768a834..152a010 100644 --- a/optim_esm_tools/analyze/region_calculation.py +++ b/optim_esm_tools/analyze/region_calculation.py @@ -606,16 +606,20 @@ def find_max_in_equal_area( continue da_sel = data.where(da_m) - max_in_sel = float( - da_sel.where(da_m).mean("lat lon".split()).max(), + + max_in_sel = oet.analyze.tools._weighted_mean_2d_numba( + da_sel.where(da_m).values, + weights=area.values, ) if prev_mask is None or target_area > area_m2: return dict( area_m2=area_m2, max_in_sel=max_in_sel, ) - prev_in_sel = float( - da_sel.where(prev_mask).mean("lat lon".split()).max(), + + prev_in_sel = oet.analyze.tools._weighted_mean_2d_numba( + da_sel.where(prev_mask).values, + weights=area.values, ) prev_area = float(area.where(prev_mask).sum())