2017-09-05 29 views
0

我有日期时间对象的数组匹配的某一天

array([datetime.datetime(2009, 8, 1, 0, 0), 
    datetime.datetime(2009, 8, 2, 0, 0), 
    datetime.datetime(2009, 8, 3, 0, 0), 
    datetime.datetime(2009, 8, 4, 0, 0), 
    datetime.datetime(2009, 8, 5, 0, 0), 
    datetime.datetime(2009, 8, 6, 0, 0), 
    datetime.datetime(2009, 8, 7, 0, 0), 
    datetime.datetime(2009, 8, 8, 0, 0), 
    datetime.datetime(2009, 8, 9, 0, 0), 
    datetime.datetime(2009, 8, 10, 0, 0), 
    datetime.datetime(2009, 8, 11, 0, 0), 
    datetime.datetime(2009, 8, 12, 0, 0), 
    datetime.datetime(2009, 8, 13, 0, 0), 
    datetime.datetime(2009, 8, 14, 0, 0), 
    datetime.datetime(2009, 8, 15, 0, 0), 
    datetime.datetime(2009, 8, 16, 0, 0), 
    datetime.datetime(2009, 8, 17, 0, 0), 
    datetime.datetime(2009, 8, 18, 0, 0), 
    datetime.datetime(2009, 8, 19, 0, 0), 
    datetime.datetime(2009, 8, 20, 0, 0), 
    datetime.datetime(2009, 8, 21, 0, 0), 
    datetime.datetime(2009, 8, 22, 0, 0), 
    datetime.datetime(2009, 8, 23, 0, 0), 
    datetime.datetime(2009, 8, 24, 0, 0), 
    datetime.datetime(2009, 8, 25, 0, 0), 
    datetime.datetime(2009, 8, 26, 0, 0), 
    datetime.datetime(2009, 8, 27, 0, 0), 
    datetime.datetime(2009, 8, 28, 0, 0), 
    datetime.datetime(2009, 8, 29, 0, 0), 
    datetime.datetime(2009, 8, 30, 0, 0), 
    datetime.datetime(2009, 8, 31, 0, 0)], dtype=object) 

我也有一个特定的时间戳观察

Timestamp('2009-08-01 00:48:00') 

我想找到查找数组元素哪个元素的数组与我的时间戳一样。

我可以用这个找到最接近时间:

find_time = np.argmin(np.abs(date_array-this_date)) 

但是发现它可以在不同的一天最接近的时间值(即任何过去的中午接近第二天比它是到午夜在原始的一天)。

我该如何找到同一天的元素(即忽略子日时间单位并在日期上匹配)。

我可以找到很多处理日期时间算术的例子,但这些似乎不适用于日期时间对象的数组。

谢谢!

更新:这是简单的吗?

np.where((data_array中== this_date)==真)

回答

1

使用

In [2205]: date_array.astype(np.datetime64) == this_date.date() 
Out[2205]: 
array([ True, False, False, False, False, False, False, False, False, 
     False, False, False, False, False, False, False, False, False, 
     False, False, False, False, False, False, False, False, False, 
     False, False, False, False], dtype=bool) 

或者,

In [2199]: np.array([x.date() for x in date_array]) == this_date.date() 
Out[2199]: 
array([ True, False, False, False, False, False, False, False, False, 
     False, False, False, False, False, False, False, False, False, 
     False, False, False, False, False, False, False, False, False, 
     False, False, False, False], dtype=bool) 
+0

完美,谢谢! – Rob