簡體   English   中英

如何在numpy記錄數組中有效地轉換日期?

[英]How to efficiently convert dates in numpy record array?

我必須將一個非常大的(170萬條記錄)csv文件讀取到一個numpy記錄數組。 其中兩列是需要轉換為日期時間對象的字符串。 此外,一欄需要是這些日期時間之間的計算差異。

此刻,我制作了一個自定義迭代器類,該類構建了一個列表列表。 然后,我使用np.rec.fromrecords將其轉換為數組。

但是,我注意到多次調用datetime.strptime()確實減慢了速度。 我想知道是否有更有效的方法來進行這些轉換。 時間精確到日期范圍內的秒。 因此,假設時間是均勻分布的(不是),似乎我正在進行20倍以上的必要轉換(170萬/(60 X 60 X 24))。

在進行不必要的轉換之前,將轉換后的值存儲在字典{string date:datetime obj}中並先檢查字典會更快嗎?

還是應該使用numpy函數(我還是numpy庫的新手)?

我可能是錯的,但是在我看來,您的問題重復出現了,因此進行相同的轉換次數超過了必要。 如果解釋正確,則最有效的方法將取決於重復次數。 如果您在170萬次中有100,000次重復,那么將160萬次寫入字典並對其進行170萬次檢查可能沒有更高的效率,因為它執行了1.6 + 170萬次讀/寫操作。 但是,如果您有100萬次重復,那么為這些返回一個答案(O(1))而不是進行額外的百萬次轉換會更快。

總而言之,python的運行速度非常慢,考慮到您正在使用170萬個輸入,您可能根本無法加快速度。 至於numpy函數,我也不是很精通它,但是我相信在線上有一些很好的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM