Отметка времени в 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+18постфикс подразумевает, что если у вас действительно есть дата, ваши временные метки указаны в наносекундах, поэтому 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]')