You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
---------------------------------------------------------------------------
UFuncTypeError Traceback (most recent call last)
Input In [72], in <cell line: 1>()
----> 1 time[1:] + 0.5 * time.diff('time')
File /work/ch0636/g300046/conda_envs/pyremo-dev/lib/python3.9/site-packages/xarray/core/_typed_ops.py:206, in DataArrayOpsMixin.__add__(self, other)
205 def __add__(self, other):
--> 206 return self._binary_op(other, operator.add)
File /work/ch0636/g300046/conda_envs/pyremo-dev/lib/python3.9/site-packages/xarray/core/dataarray.py:3530, in DataArray._binary_op(self, other, f, reflexive)
3526 other_variable = getattr(other, "variable", other)
3527 other_coords = getattr(other, "coords", None)
3529 variable = (
-> 3530 f(self.variable, other_variable)
3531 if not reflexive
3532 else f(other_variable, self.variable)
3533 )
3534 coords, indexes = self.coords._merge_raw(other_coords, reflexive)
3535 name = self._result_name(other)
File /work/ch0636/g300046/conda_envs/pyremo-dev/lib/python3.9/site-packages/xarray/core/_typed_ops.py:396, in VariableOpsMixin.__add__(self, other)
395 def __add__(self, other):
--> 396 return self._binary_op(other, operator.add)
File /work/ch0636/g300046/conda_envs/pyremo-dev/lib/python3.9/site-packages/xarray/core/variable.py:2519, in Variable._binary_op(self, other, f, reflexive)
2516 attrs = self._attrs if keep_attrs else None
2517 with np.errstate(all="ignore"):
2518 new_data = (
-> 2519 f(self_data, other_data) if not reflexive else f(other_data, self_data)
2520 )
2521 result = Variable(dims, new_data, attrs=attrs)
2522 return result
UFuncTypeError: ufunc 'add' cannot use operands with types dtype('O') and dtype('<m8[ns]')
The problem is the differentiation results in np.timedelta64 objects:
time.diff('time')
with which the arithmetics are not implemented in cftime. However, differentiation with datetime.timdelta (which is wrapped by np.timedelta64) works in this case since it's implemented in cftime, e.g., when i do np.diff, it works:
time[:-1] +0.5*np.diff(time)
i get the expected result. I am not sure what to expect from xarray and if this might be an issue of cftime (e.g., implement differentiation with np.timedelta64). I was wondering why the differentiation with cftime objects results in np.timedelta64 and not datetime.timedelta objects (like in the pure numpy differentation).
The text was updated successfully, but these errors were encountered:
What is your issue?
Hey all,
i have quick use case where i am unsure if that's related to xarray. I just want to do simple arithmetics with a cftime time axis, e.g.
and then, e.g., compute mid of those timesteps:
which results in
The problem is the differentiation results in
np.timedelta64
objects:with which the arithmetics are not implemented in
cftime
. However, differentiation withdatetime.timdelta
(which is wrapped bynp.timedelta64
) works in this case since it's implemented in cftime, e.g., when i donp.diff
, it works:i get the expected result. I am not sure what to expect from xarray and if this might be an issue of cftime (e.g., implement differentiation with
np.timedelta64
). I was wondering why the differentiation with cftime objects results innp.timedelta64
and notdatetime.timedelta
objects (like in the pure numpy differentation).The text was updated successfully, but these errors were encountered: