我有这些数据:
8.7530482 1.34E-01
8.7584016 2.68E-01
8.7637563 6.70E-01
8.769111 1.47E+00
8.7744644 2.15E+00
8.7798191 3.08E+00
...
11.5693578 6.36E+01
11.5747125 6.21E+01
11.5800659 6.17E+01
11.5854193 6.14E+01
11.590774 6.14E+01
11.5961287 6.15E+01
11.6014821 6.45E+01
问题是我需要数据域看起来像这样:
8.75
8.76
8.77
8.78
8.79
...
11.57
11.58
11.59
11.60
11.61
同时保持范围值与原始数据一致。因此,我需要智能地平均数据以获得常规间隔域。
我正在尝试使用python来执行此操作。
非常感谢任何帮助。
答案 0 :(得分:0)
听起来您想要线性插入数据。为此,请使用scipy的interp1d
。
这是一个演示:
import numpy as np
from scipy.interpolate import interp1d
data = """
11.5693578 6.36E+01
11.5747125 6.21E+01
11.5800659 6.17E+01
11.5854193 6.14E+01
11.590774 6.14E+01
11.5961287 6.15E+01
11.6014821 6.45E+01
"""
data = np.fromstring(data, sep=' ')
data = data.reshape((-1, 2))
x, y = data.T
f = interp1d(x, y)
现在我们可以使用f
来获取常规域上的插值值:
regular_x = np.arange(11.57, np.max(x), .01)
plt.plot(x, y, marker='o')
plt.plot(regular_x, f(regular_x), marker='o')
plt.legend(['Original', 'Interpolated'], loc='best')
plt.ylim([61, 65])