Last active
August 25, 2024 12:58
-
-
Save pletchm/f1302a61d81285838d6e4255d460b16f to your computer and use it in GitHub Desktop.
Xarray Example Cheatsheet
Hello, thanks for sharing. can you indicate how to in stall fbd_core package? this command does not work : conda install fbd_core
fbd_core is an internal library, but here's the code for the expand_dimensions()
function:
import numpy as np
import xarray as xr
def expand_dimensions(data, fill_value=np.nan, **new_coords):
"""
Expand (or add if it doesn't yet exist) the data array to fill in new
coordinates across multiple dimensions.
If a dimension doesn't exist in the dataarray yet, then the result will be
`data`, broadcasted across this dimension.
>>> da = xr.DataArray([1, 2, 3], dims="a", coords=[[0, 1, 2]])
>>> expand_dimensions(da, b=[1, 2, 3, 4, 5])
<xarray.DataArray (a: 3, b: 5)>
array([[ 1., 1., 1., 1., 1.],
[ 2., 2., 2., 2., 2.],
[ 3., 3., 3., 3., 3.]])
Coordinates:
* a (a) int64 0 1 2
* b (b) int64 1 2 3 4 5
Or, if `dim` is already a dimension in `data`, then any new coordinate
values in `new_coords` that are not yet in `data[dim]` will be added,
and the values corresponding to those new coordinates will be `fill_value`.
>>> da = xr.DataArray([1, 2, 3], dims="a", coords=[[0, 1, 2]])
>>> expand_dimensions(da, a=[1, 2, 3, 4, 5])
<xarray.DataArray (a: 6)>
array([ 1., 2., 3., 0., 0., 0.])
Coordinates:
* a (a) int64 0 1 2 3 4 5
Args:
data (xarray.DataArray):
Data that needs dimensions expanded.
fill_value (scalar, optional):
If expanding new coords this is the value of the new datum.
Defaults to `np.nan`.
**new_coords (list[int | str]):
The keywords are arbitrary dimensions and the values are
coordinates of those dimensions that the data will include after it
has been expanded.
Returns:
xarray.DataArray:
Data that had its dimensions expanded to include the new
coordinates.
"""
ordered_coord_dict = OrderedDict(new_coords)
shape_da = xr.DataArray(
np.zeros(list(map(len, ordered_coord_dict.values()))),
coords=ordered_coord_dict,
dims=ordered_coord_dict.keys())
expanded_data = xr.broadcast(data, shape_da)[0].fillna(fill_value)
return expanded_data
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello, thanks for sharing. can you indicate how to in stall fbd_core package? this command does not work : conda install fbd_core