这段代码在python中做了什么?

时间:2015-11-16 13:47:47

标签: python numpy interpolation nan

我正在学习python,并想知道下面的代码在Python中做了什么:

def inter_lin_nan(ts, rule):
    ts = ts.resample(rule)
    mask = np.isnan(ts)
    ts[mask] = np.interp(np.flatnonzero(mask), np.flatnonzero(~mask), ts[~mask])
    return(ts)

我知道这是一个对时间序列数据进行插值的函数,第二行根据规则重新采样数据(例如1小时)。第四和第五行怎么样?这个插值是如何完成的? np.interp需要什么值,~mask是什么?

2 个答案:

答案 0 :(得分:2)

这在文档中有详细描述:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.interp.html

  

numpy.interp(x,xp,fp,left = None,right = None,period = None)[来源]   一维线性插值。

     

将一维分段线性插值返回到函数   在离散数据点给定值

所以行ts[mask] = np.interp(np.flatnonzero(mask), np.flatnonzero(~mask), ts[~mask])只是将已知值插入NaN s(在前一行中标识,其索引在mask中编码)。

答案 1 :(得分:0)

pandas.Series.resample允许您按照规则拍摄时间序列并以不同的频率对其进行采样。假设您有一系列每日49次观察,并且您希望获得一系列7周的方法作为回报。它为你做到了这一点,然后你使用numpy.interp来估算任何以南方形式返回的值。