MCPcopy Index your code
hub / github.com/pydata/xarray / _isel_fancy

Method _isel_fancy

xarray/core/dataset.py:2903–2942  ·  view source on GitHub ↗
(
        self,
        indexers: Mapping[Any, Any],
        *,
        drop: bool,
        missing_dims: ErrorOptionsWithWarn = "raise",
    )

Source from the content-addressed store, hash-verified

2901 )
2902
2903 def _isel_fancy(
2904 self,
2905 indexers: Mapping[Any, Any],
2906 *,
2907 drop: bool,
2908 missing_dims: ErrorOptionsWithWarn = "raise",
2909 ) -> Self:
2910 valid_indexers = dict(self._validate_indexers(indexers, missing_dims))
2911
2912 variables: dict[Hashable, Variable] = {}
2913 indexes, index_variables = isel_indexes(self.xindexes, valid_indexers)
2914
2915 for name, var in self.variables.items():
2916 if name in index_variables:
2917 new_var = index_variables[name]
2918 else:
2919 var_indexers = {
2920 k: v for k, v in valid_indexers.items() if k in var.dims
2921 }
2922 if var_indexers:
2923 new_var = var.isel(indexers=var_indexers)
2924 # drop scalar coordinates
2925 # https://github.com/pydata/xarray/issues/6554
2926 if name in self.coords and drop and new_var.ndim == 0:
2927 continue
2928 else:
2929 new_var = var.copy(deep=False)
2930 if name not in indexes:
2931 new_var = new_var.to_base_variable()
2932 variables[name] = new_var
2933
2934 coord_names = self._coord_names & variables.keys()
2935 selected = self._replace_with_new_dims(variables, coord_names, indexes)
2936
2937 # Extract coordinates from indexers
2938 coord_vars, new_indexes = selected._get_indexers_coords_and_indexes(indexers)
2939 variables.update(coord_vars)
2940 indexes.update(new_indexes)
2941 coord_names = self._coord_names & variables.keys() | coord_vars.keys()
2942 return self._replace_with_new_dims(variables, coord_names, indexes=indexes)
2943
2944 def sel(
2945 self,

Callers 2

iselMethod · 0.95
iselMethod · 0.80

Calls 10

_validate_indexersMethod · 0.95
isel_indexesFunction · 0.90
itemsMethod · 0.80
to_base_variableMethod · 0.80
keysMethod · 0.80
iselMethod · 0.45
copyMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected