Skip to content

Commit befecbe

Browse files
authored
Merge pull request #15390 from anntzer/vdates
Simplify implementation of vectorized date operations.
2 parents a1c977a + 5cbdf48 commit befecbe

File tree

1 file changed

+5
-21
lines changed

1 file changed

+5
-21
lines changed

lib/matplotlib/dates.py

+5-21
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ def _from_ordinalf(x, tz=None):
305305

306306

307307
# a version of _from_ordinalf that can operate on numpy arrays
308-
_from_ordinalf_np_vectorized = np.vectorize(_from_ordinalf)
308+
_from_ordinalf_np_vectorized = np.vectorize(_from_ordinalf, otypes="O")
309309

310310

311311
@cbook.deprecated(
@@ -498,20 +498,11 @@ def num2date(x, tz=None):
498498
"""
499499
if tz is None:
500500
tz = _get_rc_timezone()
501-
if not np.iterable(x):
502-
return _from_ordinalf(x, tz)
503-
else:
504-
x = np.asarray(x)
505-
if not x.size:
506-
return x
507-
return _from_ordinalf_np_vectorized(x, tz).tolist()
508-
509-
510-
def _ordinalf_to_timedelta(x):
511-
return datetime.timedelta(days=x)
501+
return _from_ordinalf_np_vectorized(x, tz).tolist()
512502

513503

514-
_ordinalf_to_timedelta_np_vectorized = np.vectorize(_ordinalf_to_timedelta)
504+
_ordinalf_to_timedelta_np_vectorized = np.vectorize(
505+
lambda x: datetime.timedelta(days=x), otypes="O")
515506

516507

517508
def num2timedelta(x):
@@ -529,15 +520,8 @@ def num2timedelta(x):
529520
Returns
530521
-------
531522
`datetime.timedelta` or list[`datetime.timedelta`]
532-
533523
"""
534-
if not np.iterable(x):
535-
return _ordinalf_to_timedelta(x)
536-
else:
537-
x = np.asarray(x)
538-
if not x.size:
539-
return x
540-
return _ordinalf_to_timedelta_np_vectorized(x).tolist()
524+
return _ordinalf_to_timedelta_np_vectorized(x).tolist()
541525

542526

543527
def drange(dstart, dend, delta):

0 commit comments

Comments
 (0)