2017-08-26 109 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的循環通常是一個貧窮的解決方案。 –

相關問題