Python 我如何循环几个月,一次跳过三个?

Python 我如何循环几个月,一次跳过三个?,python,date,Python,Date,我有以下数组: dates array(['2015-07-01T00:00:00.000000000', '2015-08-01T00:00:00.000000000', '2015-09-01T00:00:00.000000000', '2015-10-01T00:00:00.000000000', '2015-11-01T00:00:00.000000000', '2015-12-01T00:00:00.000000000', '2016-01-0

我有以下数组:

dates
array(['2015-07-01T00:00:00.000000000', '2015-08-01T00:00:00.000000000',
       '2015-09-01T00:00:00.000000000', '2015-10-01T00:00:00.000000000',
       '2015-11-01T00:00:00.000000000', '2015-12-01T00:00:00.000000000',
       '2016-01-01T00:00:00.000000000', '2016-02-01T00:00:00.000000000',
       '2016-03-01T00:00:00.000000000', '2016-04-01T00:00:00.000000000',
       '2016-05-01T00:00:00.000000000', '2016-06-01T00:00:00.000000000',
       '2016-07-01T00:00:00.000000000', '2016-08-01T00:00:00.000000000',
       '2016-09-01T00:00:00.000000000', '2016-10-01T00:00:00.000000000',
       '2016-11-01T00:00:00.000000000', '2016-12-01T00:00:00.000000000',
       '2017-01-01T00:00:00.000000000', '2017-02-01T00:00:00.000000000',
       '2017-03-01T00:00:00.000000000', '2017-04-01T00:00:00.000000000',
       '2017-05-01T00:00:00.000000000', '2017-06-01T00:00:00.000000000',
       '2017-07-01T00:00:00.000000000', '2017-08-01T00:00:00.000000000',
       '2017-09-01T00:00:00.000000000', '2017-10-01T00:00:00.000000000',
       '2017-11-01T00:00:00.000000000', '2017-12-01T00:00:00.000000000'],
      dtype='datetime64[ns]')
我希望每
3个月创建一个循环,第一次迭代采用
日期[0]
日期[3]
,第二次迭代采用
日期[3]
日期[6]
等等

这就是我正在做的

c1 = 0
c2 = 3
for i,j in enumerate(dates[:-3]):
    v1 = dates[c1]
    v2 = dates[c2]
    c1 = c1 + 3
    c2 = c2 + 3
还有更优雅的方式吗?

对于zip中的日期1、日期2(日期[:-3:3],日期[3:3]):
#做事
您可以使用来适当地重塑形状:

>>> from numpy.lib.stride_tricks import as_strided
>>> as_strided(x, shape=((x.shape[0])//3 - 1, 2), strides=(x.itemsize*3,)*2)
 
array([['2015-07-01T00:00:00.000000000', '2015-10-01T00:00:00.000000000'],
       ['2015-10-01T00:00:00.000000000', '2016-01-01T00:00:00.000000000'],
       ['2016-01-01T00:00:00.000000000', '2016-04-01T00:00:00.000000000'],
       ['2016-04-01T00:00:00.000000000', '2016-07-01T00:00:00.000000000'],
       ['2016-07-01T00:00:00.000000000', '2016-10-01T00:00:00.000000000'],
       ['2016-10-01T00:00:00.000000000', '2017-01-01T00:00:00.000000000'],
       ['2017-01-01T00:00:00.000000000', '2017-04-01T00:00:00.000000000'],
       ['2017-04-01T00:00:00.000000000', '2017-07-01T00:00:00.000000000'],
       ['2017-07-01T00:00:00.000000000', '2017-10-01T00:00:00.000000000']],
      dtype='datetime64[ns]')

您可以直接使用下标跨越日期数组:

for v1,v2 in zip(dates[::3],dates[3::3]):
    print(v1,v2)

2015-07-01T00:00:00.000000000 2015-10-01T00:00:00.000000000
2015-10-01T00:00:00.000000000 2016-01-01T00:00:00.000000000
2016-01-01T00:00:00.000000000 2016-04-01T00:00:00.000000000
2016-04-01T00:00:00.000000000 2016-07-01T00:00:00.000000000
2016-07-01T00:00:00.000000000 2016-10-01T00:00:00.000000000
2016-10-01T00:00:00.000000000 2017-01-01T00:00:00.000000000
2017-01-01T00:00:00.000000000 2017-04-01T00:00:00.000000000
2017-04-01T00:00:00.000000000 2017-07-01T00:00:00.000000000
2017-07-01T00:00:00.000000000 2017-10-01T00:00:00.000000000