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