在另一个1d / 2d向量之后重新采样(缩减)2D向量

时间:2015-07-29 18:14:52

标签: python numpy pandas scipy time-series

在地球科学中,我们面临着一个共同的问题。有时,我们有数据表示以不同时间间隔采样的任何给定参数,这些参数不一定是均匀间隔的。

例如,我们有时间与温度,但温度读数之间的时间间隔不是均匀间隔。现在,很多时候我们需要将这个时间序列与另一个时间序列(对于相同或任何其他参数,例如湿度)进行比较,这些时间序列已经以不同的时间间隔采样并且也是不均匀的间隔。

我想在Python中做的是缩小系列,使用更多数据点(温度)内插数据,并将其重新采样到与第二个时间序列相同的时间间隔(在这种情况下为湿度)。

以编程方式在Python中我有2个具有不同长度的二维数组,我想将最长的数组重新采样到与较短数组相同的间隔,必要时进行线性插值以创建相应的数据点。

python中是否有任何函数或库可以用简单的方式完成?

由于

1 个答案:

答案 0 :(得分:1)

我相信你正在寻找SciPy的插值:

http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html

我已经调整了这个例子来处理间距不均匀的点。

from scipy.interpolate import interp1d
import numpy as np

x = np.linspace(0, 10, num=11, endpoint=True) + np.random.normal(loc=0, scale=2, size=11)
y = np.cos(-x**2/9.0)
f = interp1d(x, y)
f2 = interp1d(x, y, kind='cubic')

xmin = min(x)
xmax = max(x)
xnew = np.linspace(xmin, xmax, num=101, endpoint=True)
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')
plt.legend(['data', 'linear', 'cubic'], loc='best')
plt.show()

enter image description here