Dấu thời gian ở Numpy

Nov 07 2020

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

ti7 Nov 07 2020 at 13:53

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]')