具有按月间隔给出的特定日期时间的 Numpy 排列
Numpy arange with spesific datetime given by month interval
我想制作按月间隔给出的日期时间数组。如果我像这样使用天数作为间隔很容易
xyz = np.arange(np.datetime64('2020-03-24'), 3)
xyz
输出
array(['2020-03-24', '2020-03-25', '2020-03-26'], dtype='datetime64[D]')
只增加了3天。 3个月怎么样?我已经尝试过这种方式并且 ERROR
np.arange(datetime('2020-03-28'), np.timedelta64(3,'M'))
我已经试过了,但给出了错误的结果
np.arange(np.datetime64("2020-03-24"), np.datetime64("2020-06-24"),
np.timedelta64(1, 'M'),
dtype='datetime64[M]').astype('datetime64[D]')
输出
array(['2020-03-01', '2020-04-01', '2020-05-01'], dtype='datetime64[D]')
您的 arange
没有 dtype
引发错误:
In [91]: x = np.arange(np.datetime64("2020-03-24"), np.datetime64("2020-06-24"),
...: np.timedelta64(1, 'M'))
...
TypeError: Cannot get a common metadata divisor for NumPy datetime metadata [M] and [D] because they have incompatible nonlinear base time units
步进一个月和步进n天不一样。
数据类型:
In [85]: x = np.arange(np.datetime64("2020-03-24"), np.datetime64("2020-06-24"),
...: np.timedelta64(1, 'M'),
...: dtype='datetime64[M]')
In [86]: x
Out[86]: array(['2020-03', '2020-04', '2020-05'], dtype='datetime64[M]')
终点已转换为月份(没有任何隐含日期)。
请注意,差异是预期的 1 month
:
In [87]: np.diff(x)
Out[87]: array([1, 1], dtype='timedelta64[M]')
如果我将日期转换为 D
dtype,它会选择月初:
In [89]: x.astype('datetime64[D]')
Out[89]: array(['2020-03-01', '2020-04-01', '2020-05-01'], dtype='datetime64[D]')
日期时间增量不再统一:
In [90]: np.diff(x.astype('datetime64[D]'))
Out[90]: array([31, 30], dtype='timedelta64[D]')
===
而不是 astype
,您可以添加适当的时间增量:
In [96]: x + np.array(3, 'timedelta64[D]')
Out[96]: array(['2020-03-04', '2020-04-04', '2020-05-04'], dtype='datetime64[D]')
我想制作按月间隔给出的日期时间数组。如果我像这样使用天数作为间隔很容易
xyz = np.arange(np.datetime64('2020-03-24'), 3)
xyz
输出
array(['2020-03-24', '2020-03-25', '2020-03-26'], dtype='datetime64[D]')
只增加了3天。 3个月怎么样?我已经尝试过这种方式并且 ERROR
np.arange(datetime('2020-03-28'), np.timedelta64(3,'M'))
我已经试过了,但给出了错误的结果
np.arange(np.datetime64("2020-03-24"), np.datetime64("2020-06-24"),
np.timedelta64(1, 'M'),
dtype='datetime64[M]').astype('datetime64[D]')
输出
array(['2020-03-01', '2020-04-01', '2020-05-01'], dtype='datetime64[D]')
您的 arange
没有 dtype
引发错误:
In [91]: x = np.arange(np.datetime64("2020-03-24"), np.datetime64("2020-06-24"),
...: np.timedelta64(1, 'M'))
...
TypeError: Cannot get a common metadata divisor for NumPy datetime metadata [M] and [D] because they have incompatible nonlinear base time units
步进一个月和步进n天不一样。
数据类型:
In [85]: x = np.arange(np.datetime64("2020-03-24"), np.datetime64("2020-06-24"),
...: np.timedelta64(1, 'M'),
...: dtype='datetime64[M]')
In [86]: x
Out[86]: array(['2020-03', '2020-04', '2020-05'], dtype='datetime64[M]')
终点已转换为月份(没有任何隐含日期)。
请注意,差异是预期的 1 month
:
In [87]: np.diff(x)
Out[87]: array([1, 1], dtype='timedelta64[M]')
如果我将日期转换为 D
dtype,它会选择月初:
In [89]: x.astype('datetime64[D]')
Out[89]: array(['2020-03-01', '2020-04-01', '2020-05-01'], dtype='datetime64[D]')
日期时间增量不再统一:
In [90]: np.diff(x.astype('datetime64[D]'))
Out[90]: array([31, 30], dtype='timedelta64[D]')
===
而不是 astype
,您可以添加适当的时间增量:
In [96]: x + np.array(3, 'timedelta64[D]')
Out[96]: array(['2020-03-04', '2020-04-04', '2020-05-04'], dtype='datetime64[D]')