簡體   English   中英

如何在Python中將這兩個數組轉換為datetime對象?

[英]How do I convert these two arrays into a datetime object in Python?

我有彼此相鄰的兩列數組(日期和時間),我需要將它們轉換為日期時間對象,以便可以使用它們在x軸上繪制圖形。 這些數據在不斷更新,因此它們不是固定數字,只是固定。

datetime = np.column_stack((date,time))
datetime = np.array(datetime)
datetime
    array([[b'143.0', b'08:15'],
       [b'143.0', b'08:30'],
       [b'143.0', b'08:45'],
       [b'143.0', b'09:00'],
       [b'143.0', b'09:15'],
       [b'143.0', b'09:30'],
       [b'143.0', b'09:45'],
       [b'143.0', b'10:00'],
       [b'143.0', b'10:15'],
       [b'143.0', b'10:30'],
       [b'143.0', b'10:45'],
       [b'143.0', b'11:00'],
       [b'143.0', b'11:15'],
       [b'143.0', b'11:30'],
       [b'143.0', b'11:45'],
       [b'143.0', b'12:00'],
       [b'143.0', b'12:15'],
       [b'143.0', b'12:30'],
       [b'143.0', b'12:45'],
       [b'143.0', b'13:00'],
       [b'143.0', b'13:15'],
       [b'143.0', b'13:30'],
       [b'143.0', b'13:45'],
       [b'143.0', b'14:00'],
       [b'143.0', b'14:15'],
       [b'143.0', b'14:30'],
       [b'143.0', b'14:45'],
       [b'143.0', b'15:00'],
       [b'143.0', b'15:15'],
       [b'143.0', b'15:30'],
       [b'143.0', b'15:45'],
       [b'143.0', b'16:00'],
       [b'143.0', b'16:15'],
       [b'143.0', b'16:30'],
       [b'143.0', b'16:45'],
       [b'143.0', b'17:00'],
       [b'143.0', b'17:15'],
       [b'143.0', b'17:30'],
       [b'143.0', b'17:45'],
       [b'143.0', b'18:00'],
       [b'143.0', b'18:15'],
       [b'143.0', b'18:30'],
       [b'143.0', b'18:45'],
       [b'143.0', b'19:00'],
       [b'143.0', b'19:15'],
       [b'143.0', b'19:30'],
       [b'143.0', b'19:45'],
       [b'143.0', b'20:00'],
       [b'143.0', b'20:15'],
       [b'143.0', b'20:30'],
       [b'143.0', b'20:45'],
       [b'143.0', b'21:00'],
       [b'143.0', b'21:15'],
       [b'143.0', b'21:30'],
       [b'143.0', b'21:45'],
       [b'143.0', b'22:00'],
       [b'143.0', b'22:15'],
       [b'143.0', b'22:30'],
       [b'143.0', b'22:45'],
       [b'143.0', b'23:00'],
       [b'143.0', b'23:15'],
       [b'143.0', b'23:30'],
       [b'143.0', b'23:45'],
       [b'144.0', b'00:00'],
       [b'144.0', b'00:15'],
       [b'144.0', b'00:30'],
       [b'144.0', b'00:45'],
       [b'144.0', b'01:00'],
       [b'144.0', b'01:15'],
       [b'144.0', b'01:30'],
       [b'144.0', b'01:45'],
       [b'144.0', b'02:00'],
       [b'144.0', b'02:15'],
       [b'144.0', b'02:30'],
       [b'144.0', b'02:45'],
       [b'144.0', b'03:00'],
       [b'144.0', b'03:15'],
       [b'144.0', b'03:30'],
       [b'144.0', b'03:45'],
       [b'144.0', b'04:00'],
       [b'144.0', b'04:15'],
       [b'144.0', b'04:30'],
       [b'144.0', b'04:45'],
       [b'144.0', b'05:00'],
       [b'144.0', b'05:15'],
       [b'144.0', b'05:30'],
       [b'144.0', b'05:45'],
       [b'144.0', b'06:00'],
       [b'144.0', b'06:15'],
       [b'144.0', b'06:30'],
       [b'144.0', b'06:45'],
       [b'144.0', b'07:00'],
       [b'144.0', b'07:15'],
       [b'144.0', b'07:30'],
       [b'144.0', b'07:45'],
       [b'144.0', b'08:00'],
       [b'144.0', b'08:15'],
       [b'144.0', b'08:30'],
       [b'144.0', b'08:45'],
       [b'144.0', b'09:00'],
       [b'144.0', b'09:15'],
       [b'144.0', b'09:30'],
       [b'144.0', b'09:45'],
       [b'144.0', b'10:00'],
       [b'144.0', b'10:15'],
       [b'144.0', b'10:30'],
       [b'144.0', b'10:45'],
       [b'144.0', b'11:00'],
       [b'144.0', b'11:15'],
       [b'144.0', b'11:30'],
       [b'144.0', b'11:45'],
       [b'144.0', b'12:00'],
       [b'144.0', b'12:15'],
       [b'144.0', b'12:30'],
       [b'144.0', b'12:45'],
       [b'144.0', b'13:00'],
       [b'144.0', b'13:15'],
       [b'144.0', b'13:30'],
       [b'144.0', b'13:45'],
       [b'144.0', b'14:00'],
       [b'144.0', b'14:15'],
       [b'144.0', b'14:30'],
       [b'144.0', b'14:45'],
       [b'144.0', b'15:00'],
       [b'144.0', b'15:15'],
       [b'144.0', b'15:30'],
       [b'144.0', b'15:45'],
       [b'144.0', b'16:00'],
       [b'144.0', b'16:15'],
       [b'144.0', b'16:30'],
       [b'144.0', b'16:45'],
       [b'144.0', b'17:00'],
       [b'144.0', b'17:15'],
       [b'144.0', b'17:30'],
       [b'144.0', b'17:45'],
       [b'144.0', b'18:00'],
       [b'144.0', b'18:15'],
       [b'144.0', b'18:30'],
       [b'144.0', b'18:45'],
       [b'144.0', b'19:00'],
       [b'144.0', b'19:15'],
       [b'144.0', b'19:30'],
       [b'144.0', b'19:45'],
       [b'144.0', b'20:00'],
       [b'144.0', b'20:15'],
       [b'144.0', b'20:30'],
       [b'144.0', b'20:45'],
       [b'144.0', b'21:00'],
       [b'144.0', b'21:15'],
       [b'144.0', b'21:30'],
       [b'144.0', b'21:45'],
       [b'144.0', b'22:00'],
       [b'144.0', b'22:15'],
       [b'144.0', b'22:30'],
       [b'144.0', b'22:45'],
       [b'144.0', b'23:00'],
       [b'144.0', b'23:15'],
       [b'144.0', b'23:30'],
       [b'144.0', b'23:45'],
       [b'145.0', b'00:00'],
       [b'145.0', b'00:15'],
       [b'145.0', b'00:30'],
       [b'145.0', b'00:45'],
       [b'145.0', b'01:00'],
       [b'145.0', b'01:15'],
       [b'145.0', b'01:30'],
       [b'145.0', b'01:45'],
       [b'145.0', b'02:00'],
       [b'145.0', b'02:15'],
       [b'145.0', b'02:30'],
       [b'145.0', b'02:45'],
       [b'145.0', b'03:00'],
       [b'145.0', b'03:15'],
       [b'145.0', b'03:30'],
       [b'145.0', b'03:45'],
       [b'145.0', b'04:00'],
       [b'145.0', b'04:15'],
       [b'145.0', b'04:30'],
       [b'145.0', b'04:45'],
       [b'145.0', b'05:00'],
       [b'145.0', b'05:15'],
       [b'145.0', b'05:30'],
       [b'145.0', b'05:45'],
       [b'145.0', b'06:00'],
       [b'145.0', b'06:15'],
       [b'145.0', b'06:30'],
       [b'145.0', b'06:45'],
       [b'145.0', b'07:00'],
       [b'145.0', b'07:15'],
       [b'145.0', b'07:30'],
       [b'145.0', b'07:45'],
       [b'145.0', b'08:00']], 
      dtype='|S32')

第一列是儒略時間,因此基本上是今天之后的最后3天,因為它會更新為包括最近的3天。 任何幫助將不勝感激。

您可以先使用列表推導將數據重塑為與numpy的datetime64類型兼容的格式,然后使用該格式創建一個數組。 看起來numpy不能與Python中的普通datetime.datetime一起使用。

不能完全確定朱利安時間的工作方式,但是我假設您的第一列是從年初開始的一天。 這應該給您您想要的。

from datetime import datetime, timedelta
data = [[b'143.0', b'08:15'], [b'143.0', b'08:30']...]

base = datetime(2016, 1, 1, 0, 0, 0, 0)
transformed = [(base + timedelta(days=int(float(x)), hours=int(y[0:2]), minutes=int(y[3:5]))).isoformat() for x, y in data]

my_array = np.array(transformed, dtype='datetime64')

暫無
暫無

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

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