在Python中查找两个日期时间数组之间的重复日期

3

我有两个日期时间数组,想要输出一个仅包含两个数组中都有的日期的数组。虽然我觉得这是我应该自己能回答的问题,但我已经花了很多时间搜索,但我并不知道如何解决。

>>> 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个回答

2

我建议遍历datetime1和datetime2的值,然后检查是否包含。例如:

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

NumPy中的for循环通常不是一个好的解决方案。 - John Zwinck

2

This:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接