【发布时间】:2019-11-04 16:49:38
【问题描述】:
我有数千个包含不规则数据的文件,我试图将它们插入到同一个网格中。数据存储在单独的numpy 数组中,用于许多不同的变量和时间。我一直在使用 matplotlib.dates 通过将时间转换为数字来插入时间。但是因为我不想推断丢失的数据,所以插值在数据集中引入了np.nan 值,这使得从matplotlib 日期到datetime 对象的转换变得很棘手,因为我需要保存形状(即不能删除@ 987654326@) 但md.num2date 无法处理掩码数组或np.nan。
在另一个库中是否有另一个类似md.date2num 和md.num2date 的命令可以解释nans?还是这里唯一的解决方案是 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
【问题讨论】:
标签: python python-2.7 numpy matplotlib