Dấu thời gian ở Numpy
Tôi đang cố gắng trích xuất dữ liệu từ tệp netcdf bằng wrf-python. Dữ liệu cho mỗi giờ. Ngày đang được trích xuất dưới dạng số, không phải lịch-ngày-giờ. Đầu tiên, tôi giải nén dữ liệu, chuyển đổi nó thành một mảng np phẳng, sau đó cố gắng lưu tệp. Định dạng được lưu thành '% s'
np.savetxt((stn + 'WRF_T2_T10_WS_WD.csv'), np.transpose(arr2D), %s, delimiter=',', header=headers, comments='')
nó trông như thế này:
nhưng nó cần phải trông như thế này:
Cảm ơn
Trả lời
Theo quy ước, ngày tháng thường được lưu trữ dưới dạng bù trừ tính bằng giây kể từ ngày 1 tháng 1 năm 1970
Đối với trường hợp chuyển đổi giây, câu trả lời này Python Numpy Loadtxt - Dấu thời gian chuyển đổi unix đề xuất chuyển đổi chúng bằng cách thay đổi kiểu dữ liệu của chúng (phải hiệu quả nhất có thể vì nó tránh các vòng lặp theo hàng, sao chép dữ liệu, v.v.)
x = np.asarray(x, dtype='datetime64[s]')
Tuy nhiên, hậu tố E+18ngụ ý rằng nếu bạn thực sự có một ngày, dấu thời gian của bạn tính bằng nano giây, vì vậy datetime64[ns]có thể phù hợp với bạn
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]')