การประทับเวลาใน Numpy
Nov 07 2020
ฉันพยายามดึงข้อมูลจากไฟล์ netcdf โดยใช้ wrf-python ข้อมูลเป็นทุกชั่วโมง วันที่จะถูกดึงออกมาเป็นตัวเลขไม่ใช่ปฏิทิน - วันที่ - เวลา ก่อนอื่นฉันแยกข้อมูลแปลงเป็นอาร์เรย์ np แบบแบนจากนั้นลองบันทึกไฟล์ รูปแบบถูกบันทึกเป็น "% s"
np.savetxt((stn + 'WRF_T2_T10_WS_WD.csv'), np.transpose(arr2D), %s, delimiter=',', header=headers, comments='')
ดูเหมือนว่า:
แต่ต้องมีลักษณะดังนี้:
ขอบคุณ
คำตอบ
ti7 Nov 07 2020 at 13:53
ตามแบบแผนมักจัดเก็บวันที่เป็นออฟเซ็ตเป็นวินาทีตั้งแต่วันที่ 1 มกราคม 1970
สำหรับกรณีของการแปลงวินาทีคำตอบนี้Python Numpy Loadtxt - Convert unix timestampแนะนำให้แปลงโดยการเปลี่ยนประเภทข้อมูล (ควรมีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้ในการหลบลูปทีละแถวการคัดลอกข้อมูล ฯลฯ )
x = np.asarray(x, dtype='datetime64[s]')
อย่างไรก็ตามE+18postfix บอกเป็นนัยว่าหากคุณมีวันที่จริงๆการประทับเวลาของคุณจะอยู่ในหน่วยนาโนวินาทีดังนั้นdatetime64[ns]อาจเหมาะกับคุณ
import time
import numpy as np
>>> a = np.array([time.time() * 10**9]) # epoch seconds to ns
>>> a # example array
array([1.60473147e+18])
>>> a = np.asarray(a, dtype='datetime64[ns]')
>>> a
array(['2020-11-07T06:44:29.714103040'], dtype='datetime64[ns]')