我正在尋找處理大量資料,因此我對計算以下內容的最快方法感興趣:
我將以下 np.array 作為 np.ndarray 的一部分,我想將其從“<U21”轉換為“np.datetime64”(毫秒)。
當我在一個條目上執行以下代碼時,它可以作業:
tmp_array[:,0][0].astype(int).astype('datetime64[ms]')
結果:numpy.datetime64('2019-10-09T22:54:00.000')
當我像這樣在子陣列上執行相同的操作時:
tmp_array[:,0] = tmp_array[:,0].astype(int).astype('datetime64[ms]')
我總是收到以下錯誤:
RuntimeError: The string provided for NumPy ISO datetime formatting was too short, with length 21
numpy 版本 1.22.4
array(['1570661640000', '1570661700000', '1570661760000'],dtype='<U21')
uj5u.com熱心網友回復:
我確信有一種方法可以使用 numpy 的力量更有效地做到這一點,但這種方法有效:給定您的 tmp_array 形式:
array(['1570661640000', '1570661700000', '1570661760000'], dtype='<U21')
將 unix 基準日期表示為:
db = np.datetime64('1970-01-01')
然后通過以下方式創建所需的日期時間陣列:
cnvrt_array = np.array([db np.timedelta64(int(x), 'ms') for x in tmp_array])
這產生了陣列:
array(['2019-10-09T22:54:00.000', '2019-10-09T22:55:00.000',
'2019-10-09T22:56:00.000'], dtype='datetime64[ms]')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507394.html
上一篇:洗掉行并找到特定列的平均值