找到两个日期时间数组python之间的重复日期

时间:2017-08-26 00:07:23

标签: python arrays datetime

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

>>> 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),)

2 个答案:

答案 0 :(得分:2)

我想说只是迭代datetime1和datetime2的值并检查包含。例如:

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

答案 1 :(得分:1)

此:

datetime1==datetime2

元素明智比较。它将[0]与[0]进行比较,然后将[1]与[1]进行比较,并给出一个布尔数组。

相反,请尝试:

np.in1d(datetime1, datetime2)

这为您提供了与datetime1大小相同的布尔数组,对于datetime2中存在的元素,设置为True。

如果您的目标只是获取而不是索引,请使用以下命令:

np.intersect1d(datetime1, datetime2)

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