一组日期时间值

an array of datetime values

我有以下代码,我尝试用 1988-2016 的日期填充数组

from datetime import datetime, timedelta
t = np.arange(datetime(1988,1,1), datetime(2016,1,1), timedelta(days=365)).astype(datetime)

这给了我以下输出:

array([datetime.datetime(1988, 1, 1, 0, 0),
       datetime.datetime(1988, 12, 31, 0, 0),
       datetime.datetime(1989, 12, 31, 0, 0),
                 ....
       datetime.datetime(2015, 12, 25, 0, 0)], dtype=object)

但是,对于我的输出,我只想有年份而不是月份或日期,我不希望 datetime.datetime 在开头。所以我想要这样的东西:

array([(1988)
      (1989),
      (1990),
        ...
      (2015)], dtype=object)

我怎样才能做到这一点?

这应该为您提供两个年份的数组作为日期时间对象。

year_objects = []
num_years = 20
start_year = 1988
for i in range(num_years):
    x = datetime.datetime(start_year + i, 1, 1)
    year_objects.append(x) 

使用numpy.datetime64.

import numpy as np
t = np.arange('1988','2016',dtype='datetime64[Y]')

变量将具有表示

array(['1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995',
   '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003',
   '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011',
   '2012', '2013', '2014', '2015'], dtype='datetime64[Y]')

然后您可以更改日期时间的格式化程序

np.set_printoptions(formatter={'datetime': lambda x: '('+str(x)+')'})

变量现在将被格式化为

array([(1988), (1989), (1990), (1991), (1992), (1993), (1994), (1995),
   (1996), (1997), (1998), (1999), (2000), (2001), (2002), (2003),
   (2004), (2005), (2006), (2007), (2008), (2009), (2010), (2011),
   (2012), (2013), (2014), (2015)], dtype='datetime64[Y]')