I propose adding support for datetime64/timedelta64 in linspace and solicit
feedback on the feature. As is, linspace raises UFuncTypeError when
parameters start and stop are datetime64/timedelta64. The complementary
function arange supports these types. Work was started on this feature in PR
14700 <https://github.com/numpy/numpy/pull/14700> but has stalled and I
would like to complete it, but there are some issues worth getting feedback
on.

   1. Supporting datetime64/timedelta64 will require a special case code
   path within linspace. The code path is selected based on the start
   parameter data type.
   2. The output dtype has to be explicitly set.
   3. The step size resolution is determined by the lesser resolution of
   start and dtype.

Issue 3 may lead to an unexpected result for an end-user. For example,

>>> import numpy as np
>>> np.linspace(np.timedelta64(0, "s"), np.timedelta64(1, "s"), 4,
dtype="timedelta64[ms]")
array([   0,    0,    0, 1000], dtype='timedelta64[ms]')

The existing solution in PR 14700 does not override the end-user's start
and dtype resolution. In this case, the end-user would have to set both
start and dtype to "ms" resolution to get the expected result.

>>> np.linspace(np.timedelta64(0, "ms"), np.timedelta64(1, "s"), 4,
dtype="timedelta64[ms]")
array([   0,  333,  666, 1000], dtype='timedelta64[ms]')

In PR 14700, there is some discussion of "NaT" handling. In my
implementation, "NaT" works the same as "NaN" and I am not aware of any
corner cases.
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to