Overview
Add support for timedelta64 type to NumSharp for duration arithmetic and time series operations.
Problem
NumSharp lacks timedelta support, needed for datetime arithmetic:
>>> import numpy as np
>>> np.timedelta64(30, 'D')
numpy.timedelta64(30,'D')
>>> np.timedelta64(2, 'h') + np.timedelta64(30, 'm')
numpy.timedelta64(150,'m')
>>> np.datetime64('2024-01-15') + np.timedelta64(30, 'D')
numpy.datetime64('2024-02-14')
>>> np.array([1, 2, 3], dtype='timedelta64[D]')
array([1, 2, 3], dtype='timedelta64[D]')
Use cases:
- Duration arithmetic — Add/subtract time periods
- Time differences —
datetime64 - datetime64 = timedelta64
- Time series — Intervals, sampling rates
- Data science — Age calculations, time-to-event
Proposal
Task List
Units (matching NumPy)
Same as datetime64: Y, M, W, D, h, m, s, ms, us, ns
C# Type Mapping
| NumPy |
C# |
Notes |
| timedelta64 |
TimeDelta64 struct |
Custom with unit |
| timedelta64 |
TimeSpan |
Limited to 100ns, no unit tracking |
Implementation Effort
MEDIUM — Similar to datetime64, with additional arithmetic operations.
Estimated: ~300 lines for struct and operations.
Related
References
Overview
Add support for
timedelta64type to NumSharp for duration arithmetic and time series operations.Problem
NumSharp lacks timedelta support, needed for datetime arithmetic:
Use cases:
datetime64 - datetime64 = timedelta64Proposal
Task List
TimeDelta64struct with unit awareness:NPTypeCode.TimeDelta64toNPTypeCode.cstimedelta + timedelta → timedeltatimedelta - timedelta → timedeltatimedelta * scalar → timedeltatimedelta / scalar → timedeltatimedelta / timedelta → floatdatetime + timedelta → datetimedatetime - timedelta → datetimedatetime - datetime → timedeltanp.timedelta64()constructorUnits (matching NumPy)
Same as datetime64: Y, M, W, D, h, m, s, ms, us, ns
C# Type Mapping
Implementation Effort
MEDIUM — Similar to datetime64, with additional arithmetic operations.
Estimated: ~300 lines for struct and operations.
Related
References