在numpy中给定日期周围生成-1/+1天

Sir*_* S. 3 arrays datetime numpy pandas

考虑下面的numpy数组:

import numpy as np
t = np.array(['2016-07-28', '2016-08-25', '2016-09-29', '2016-10-27', '2016-11-17'], dtype='datetime64[D]')
Run Code Online (Sandbox Code Playgroud)

如何为每个数组元素生成前一天和第二天?我想要的输出如下:

array(['2016-07-27', '2016-07-28', '2016-07-29', ..., '2016-11-16',
   '2016-11-17', '2016-11-18'], dtype='datetime64[D]')
Run Code Online (Sandbox Code Playgroud)

我目前的方法是分别生成三个数组(上一个,一天,下一个),然后将它们组合如下:

tt = np.sort(np.append(t1,(t,t2)))
Run Code Online (Sandbox Code Playgroud)

Div*_*kar 6

Broadcast 这里也!

(t[:,None] + np.arange(-1,2)).ravel()
Run Code Online (Sandbox Code Playgroud)

紧凑版 -

(t[:,None] + [-1,0,1]).ravel()
Run Code Online (Sandbox Code Playgroud)

样品运行 -

In [191]: t
Out[191]: array(['2016-07-28', '2016-08-25', '2016-09-29', '2016-10-27', '2016-11-17'], dtype='datetime64[D]')

In [192]: (t[:,None] + np.arange(-1,2)).ravel()
Out[192]: 
array(['2016-07-27', '2016-07-28', '2016-07-29', '2016-08-24',
       '2016-08-25', '2016-08-26', '2016-09-28', '2016-09-29',
       '2016-09-30', '2016-10-26', '2016-10-27', '2016-10-28',
       '2016-11-16', '2016-11-17', '2016-11-18'], dtype='datetime64[D]')

In [193]: (t[:,None] + [-1,0,1]).ravel()
Out[193]: 
array(['2016-07-27', '2016-07-28', '2016-07-29', '2016-08-24',
       '2016-08-25', '2016-08-26', '2016-09-28', '2016-09-29',
       '2016-09-30', '2016-10-26', '2016-10-27', '2016-10-28',
       '2016-11-16', '2016-11-17', '2016-11-18'], dtype='datetime64[D]')
Run Code Online (Sandbox Code Playgroud)