У меня есть тысячи файлов с нерегулярными данными, которые я пытаюсь интерполировать в одну и ту же сетку.Данные хранятся в отдельных numpy
массивах для различных переменных и времен.Я интерполировал время, используя matplotlib.dates
, конвертируя время в числа.Но поскольку я не хочу экстраполировать отсутствующие данные, интерполяция ввела np.nan
значения в наборе данных, что делает преобразование из matplotlib
даты в datetime
объекта сложным, потому что мне нужно сохранить форму (то есть не могу удалить np.nans
) но md.num2date
не может обработать замаскированные массивы или np.nan
.
Есть ли другая команда, например md.date2num
и md.num2date
, в другой библиотеке, которая может составлять nan
с?Или единственное решение здесь - цикл for
?
import numpy as np
import matplotlib.dates as md
tdata = np.array([np.nan, np.nan, 736926.9827155,736926.98274578,736926.98276768,736926.98285067,736926.9828712])
#Allows num2date to work but removes the nan values and won't conserve shape
test1 = md.num2date(tdata[~np.isnan(tdata)])
print(len(tdata),len(test1))
#Using a mask will produce an error
#test2 = md.num2date(np.ma.masked_array(tdata,np.isnan(tdata)))
Обратите внимание, что мне нужно, чтобы фигуры были одинаковыми и что np.nan
может встречаться в любом месте массива.Я использую Python 2.7