如何插入单列数据以匹配另一列数据的形状?

时间:2015-11-07 03:21:16

标签: python scipy interpolation

如果标题令人困惑,我很抱歉,我真的不敢想如何简明扼要地说出来。

我有两个xy个文件,这两个文件在x轴(0到130)中覆盖相同的范围,但是其中一个有109个样本而另一个有81个 - 格式如下:

x1 data1
...
x109 data109 

x1 data1
...
x81 data81

我想插入第二个,这样它也有109个样本,这将允许我直接比较沿x轴的每个给定位置的数据。或者甚至可以插入它们,以便它们每个都有100个样本。

通过一些研究,我认为 Scipy spline会做我想要做的事情,但是我有点困惑如何让它发挥作用。

任何帮助将不胜感激。如果你知道另一种方法,我愿意接受它。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您链接的UnivariateSpline代码是较低级别的例程 - 对您的案例使用scipy.interpolate.interp1d可能更好。

就您的数据而言,您应该能够使用np.loadtxt读取文件,将列提取为numpy数组,然后使用interp1d,如下所示:

x1, y1 = np.loadtxt('file1.txt').transpose()
x2, y2 = np.loadtxt('file2.txt').transpose()

# interpolate (x2, y2) onto grid x1
from scipy.interpolate import interp1d
func = interp1d(x2, y2, kind='cubic')
y2_interp = func(x1)