Regionmask
Get data for a state
import regionmask
states = regionmask.defined_regions.natural_earth.us_states_10 # 50
mask = states.mask(da.lon, da.lat)
state_mask = (
xr.where(states_mask == states["STATE"].number, 1, np.nan)
.dropna("lat", how="all")
.dropna("lon", how="all")
)
_ = da.sel(
lat=slice(state_mask.lat.min(), state_mask.lat.max()),
lon=slice(state_mask.lon.min(), state_mask.lon.max()),
)
da_state_mask = _ * state_mask
Create a mask
https://github.com/pydata/xarray/discussions/4948#discussioncomment-404621
air = xr.tutorial.open_dataset("air_temperature")
mask_3D = us_states.mask_3D(air.air)
mask_3D_a = mask_3D.swap_dims({"region": "abbrevs"})
air.air.where(mask_3D_a.sel(abbrevs="FL"))