如何插入单列数据以匹配另一列数据的形状?
How to interpolate a single column of data to match the shape of another column of data?
抱歉,如果标题令人困惑,我真的想不出如何简洁地表达它。
我有两个 xy
文件,它们都覆盖了 x-axis 中的相同范围(0 到 130),但是其中一个有 109 个样本,另一个有 81 个 - 格式为如下:
x1 data1
...
x109 data109
和
x1 data1
...
x81 data81
我想对第二个进行插值,使其也有 109 个样本,这样我就可以直接比较沿 x 轴的每个给定位置的数据。或者甚至可以对它们进行插值,以便它们每个都有大约 100 个样本。
通过一些研究,我 认为 Scipy spline 会做我想做的事,但是我有点困惑如何让它发挥作用。
如有任何帮助,我们将不胜感激。如果您知道另一种方法,我愿意接受。提前致谢。
您 link 使用的 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)
抱歉,如果标题令人困惑,我真的想不出如何简洁地表达它。
我有两个 xy
文件,它们都覆盖了 x-axis 中的相同范围(0 到 130),但是其中一个有 109 个样本,另一个有 81 个 - 格式为如下:
x1 data1
...
x109 data109
和
x1 data1
...
x81 data81
我想对第二个进行插值,使其也有 109 个样本,这样我就可以直接比较沿 x 轴的每个给定位置的数据。或者甚至可以对它们进行插值,以便它们每个都有大约 100 个样本。
通过一些研究,我 认为 Scipy spline 会做我想做的事,但是我有点困惑如何让它发挥作用。
如有任何帮助,我们将不胜感激。如果您知道另一种方法,我愿意接受。提前致谢。
您 link 使用的 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)