Source code for microcalorimetry.math.numbers
"""
Generic numerical methods.
"""
import xarray as xr
[docs]
def greedy_average(*arrays: xr.DataArray) -> xr.DataArray:
"""
Average arrays by alligning coordinates.
Missing values are ignored during the averaging.
Parameters
----------
*arrays : xr.DataArray
Arrays to greedy average across.
"""
alligned = xr.align(*arrays, join='outer')
alligned = xr.concat(alligned, dim='__all__')
mean = alligned.mean(dim='__all__', skipna=True)
return mean
[docs]
def greedy_std(
*arrays: xr.DataArray,
ddof: int = 1,
min_points: int = 3,
) -> xr.DataArray:
"""
Take the standard deviation across arrays.
Values missing between the arrays are ignored.
Parameters
----------
ddof : int, optional
DDOF, set to 1 for an unbiased estimator, by default 1
min_points : int, optional
_description_, by default 3
Returns
-------
xr.DataArray
_description_
"""
alligned = xr.align(*arrays, join='outer')
alligned = xr.concat(alligned, dim='__all__')
std = alligned.std(dim='__all__', ddof=ddof, skipna=True)
return std