MCPcopy
hub / github.com/pydata/xarray / _ensure_numeric

Function _ensure_numeric

xarray/computation/computation.py:918–957  ·  view source on GitHub ↗

Converts all datetime64 variables to float64 Parameters ---------- data : DataArray or Dataset Variables with possible datetime dtypes. Returns ------- DataArray or Dataset Variables with datetime64 dtypes converted to float64.

(data: Dataset | DataArray)

Source from the content-addressed store, hash-verified

916
917
918def _ensure_numeric(data: Dataset | DataArray) -> Dataset | DataArray:
919 """Converts all datetime64 variables to float64
920
921 Parameters
922 ----------
923 data : DataArray or Dataset
924 Variables with possible datetime dtypes.
925
926 Returns
927 -------
928 DataArray or Dataset
929 Variables with datetime64 dtypes converted to float64.
930 """
931 from xarray.core.dataset import Dataset
932
933 def _cfoffset(x: DataArray) -> Any:
934 scalar = x.compute().data[0]
935 if not is_scalar(scalar):
936 # we do not get a scalar back on dask == 2021.04.1
937 scalar = scalar.item()
938 return type(scalar)(1970, 1, 1)
939
940 def to_floatable(x: DataArray) -> DataArray:
941 if x.dtype.kind in "MO":
942 # datetimes (CFIndexes are object type)
943 offset = (
944 np.datetime64("1970-01-01") if x.dtype.kind == "M" else _cfoffset(x)
945 )
946 return x.copy(
947 data=datetime_to_numeric(x.data, offset=offset, datetime_unit="ns"),
948 )
949 elif x.dtype.kind == "m":
950 # timedeltas
951 return duck_array_ops.astype(x, dtype=float)
952 return x
953
954 if isinstance(data, Dataset):
955 return data.map(to_floatable)
956 else:
957 return to_floatable(data)
958
959
960def _calc_idxminmax(

Callers 2

polyfitFunction · 0.90
polyvalFunction · 0.85

Calls 2

to_floatableFunction · 0.85
mapMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…