Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用NaN将Matplitlib日期数组转换为Datetime对象_Python_Python 2.7_Numpy_Matplotlib - Fatal编程技术网

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