numpy.datetime64()日期函数
Basic Datetimes
创建数据时间的最基本的方法是使用ISO 8601日期或日期时间格式的字符串。内部存储单元是从字符串的形式自动选择的,可以是date unit或time unit。
日期单位是年(‘Y’),月(‘M’),星期(‘W’)和日(‘D’),而时间单位是小时(h),秒(‘s’),毫秒(‘ms’)和一些附加的基于秒前缀的单位。
简单的ISO日期
>>> np.datetime64('2005-02-25')
numpy.datetime64('2005-02-25')
str(np.datetime64('2005-02-25'))
#'2005-02-25'
使用月份为单位
>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
仅指定月份,但强制使用“天”单位:
>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
从字符串创建数据集的数组时,仍然可以使用带有通用单位的日期时间类型从输入中自动选择单位。
>>> np.array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64')
array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64[D]')
生成日期范围
datetime类型适用于许多常见的NumPy函数,例如arange
可用于生成日期范围。
所有日期一个月:
指定格式dtype=datetime64[D]
天
Z = np.arange('2016-07', '2016-08', dtype='datetime64[D]')
'''
array(['2016-07-01', '2016-07-02', '2016-07-03', '2016-07-04',
'2016-07-05', '2016-07-06', '2016-07-07', '2016-07-08',
'2016-07-09', '2016-07-10', '2016-07-11', '2016-07-12',
'2016-07-13', '2016-07-14', '2016-07-15', '2016-07-16',
'2016-07-17', '2016-07-18', '2016-07-19', '2016-07-20',
'2016-07-21', '2016-07-22', '2016-07-23', '2016-07-24',
'2016-07-25', '2016-07-26', '2016-07-27', '2016-07-28',
'2016-07-29', '2016-07-30', '2016-07-31'], dtype='datetime64[D]')
'''
日期和时间的增量算法 timedelta64
NumPy 允许减去两个日期时间值,一个产生具有时间单位的数字的操作。由于 NumPy 在其核心中没有物理量系统,因此创建了timedelta64
数据类型以补充datetime64。
Datetimes
和Timedeltas
一起工作,为简单的日期时间计算提供方法。
>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
#numpy.timedelta64(366,'D')
str(np.datetime64('2009-01-01') - np.datetime64('2008-01-01'))
'366 days'
str(np.datetime64('2009-01-01') - np.datetime64('2008-01-01')).split(" ")[0]
#'366'
np.busday_count()
要查找datetime64日期的指定范围内有多少有效天数,请使用busday_count
:
>>> np.busday_count(np.datetime64('2011-07-11'), np.datetime64('2011-07-18'))
5
>>> np.busday_count(np.datetime64('2011-07-18'), np.datetime64('2011-07-11'))
-5
如果你有一个datetime64 day值的数组,并且你想要一个有多少是有效日期的计数,你可以这样做:
>>> a = np.arange(np.datetime64('2011-07-11'), np.datetime64('2011-07-18'))
>>> np.count_nonzero(np.is_busday(a))
5