如何通过Python插入3d时间序列数据?

时间:2018-05-18 14:58:26

标签: python numpy scipy

我有一些3d时间序列数据。但他们有一些缺失值(np.nan)。 所以,我想插入它们。

示例:

x = [0, nan, 2, 3, 4, 5]
y = [0, nan, 2, 3, 4, 5]
z = [3, nan, 5, 6, 7, 8]

# I want
interp(1) -> [1, 1, 4] 

我该如何计算?

我试图通过样条曲线逐个插入x,y和z。但我觉得这很奇怪。单独插值是奇怪还是数学上是正确的还是有任何解决方案?

如果单独计算,使用scipy非常容易:

fx = interpolate.interp1d(time, x, kind="cubic")
fy = interpolate.interp1d(time, y, kind="cubic")
fz = interpolate.interp1d(time, z, kind="cubic")

1 个答案:

答案 0 :(得分:0)

根据您的评论,您似乎想要用两边的平均值替换nan值(即使您已经提到了样条方法)。所以这是一个简单的函数,以防在开始和结束时没有发生。 导入numpy为np

x = np.array([0, np.nan, 2, 3, 4, 5])
y = np.array([0, np.nan, 2, 3, 4, 5])
z = np.array([3, np.nan, 5, 6, 7, 8])
def nan_mean(v):
    ind=np.where(np.isnan(v))[0]
    v[ind]=(v[ind+1]+v[ind-1])/2
nan_mean(x)
nan_mean(y)
nan_mean(z)

这将返回您想要的值