Python 使用NaN将Matplitlib日期数组转换为Datetime对象
我有数千个文件,其中包含不规则的数据,我正试图将这些数据插值到同一个网格中。数据存储在单个Python 使用NaN将Matplitlib日期数组转换为Datetime对象,python,python-2.7,numpy,matplotlib,Python,Python 2.7,Numpy,Matplotlib,我有数千个文件,其中包含不规则的数据,我正试图将这些数据插值到同一个网格中。数据存储在单个numpy数组中,用于许多不同的变量和时间。我一直在使用matplotlib.dates将时间转换为数字来插值时间。但由于我不想推断缺失的数据,插值在数据集中引入了np.nan值,这使得从matplotlibdate到datetime对象的转换很棘手,因为我需要保留形状(即无法删除np.nans)但是md.num2date无法处理屏蔽数组或np.nan 在另一个库中是否有类似于md.date2num和md.
numpy
数组中,用于许多不同的变量和时间。我一直在使用matplotlib.dates
将时间转换为数字来插值时间。但由于我不想推断缺失的数据,插值在数据集中引入了np.nan
值,这使得从matplotlib
date到datetime
对象的转换很棘手,因为我需要保留形状(即无法删除np.nans
)但是md.num2date
无法处理屏蔽数组或np.nan
在另一个库中是否有类似于md.date2num
和md.num2date
的命令可以解释nan
s?或者这里唯一的解决方案是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
可以出现在数组中的任何位置。我正在使用Python2.7,可能是这样的
test1 = np.full_like(tdata, np.nan, dtype=object)
test1[~np.isnan(tdata)] = md.num2date(tdata[~np.isnan(tdata)])