2017-08-26 76 views
2

我有两个日期时间数组,我试图输出一个数组,只有这两个数组之间重复的日期..我觉得这是我应该能够回答自己,但我花了很多时间搜索,我不明白如何解决这个问题。找到两个日期时间数组之间的重复日期python

>>> datetime1[0:4] 
array([datetime.datetime(2014, 6, 19, 4, 0), 
datetime.datetime(2014, 6, 19, 5, 0), 
datetime.datetime(2014, 6, 19, 6, 0), 
datetime.datetime(2014, 6, 19, 7, 0)], dtype=object) 

>>> datetime2[0:4] 
array([datetime.datetime(2014, 6, 19, 3, 0), 
datetime.datetime(2014, 6, 19, 4, 0), 
datetime.datetime(2014, 6, 19, 5, 0), 
datetime.datetime(2014, 6, 19, 6, 0)], dtype=object) 

我下面试过,但我还是不明白为什么这不起作用

>>> np.where(datetime1==datetime2) 
(array([], dtype=int64),) 

回答

1

此:

datetime1==datetime2 

是一个元素方面比较。它将[0]与[0]进行比较,然后将[1]与[1]进行比较,并为您提供一个布尔数组。

相反,尝试:

np.in1d(datetime1, datetime2) 

这给你一个布尔数组大小相同,设置为True,那些存在于datetime2的元素。

如果你的目标仅仅是获得而非指标,使用此:

np.intersect1d(datetime1, datetime2) 

https://docs.scipy.org/doc/numpy/reference/generated/numpy.intersect1d.html

2

我要说的只是遍历datetime1和DATETIME2的值,并检查遏制。因此,例如:

for date in datetime1: 
    if date in datetime2: 
     print(date) 
+0

对于NumPy的循环通常是一个贫穷的解决方案。 –

相关问题