我一直在浏览文档中的scipy.interpolate
示例,但我无法弄清楚如何获取间隔不均匀的数据并对其进行插值,因为所有教程都使用 linspaces——间隔均匀。
例如,我有一些这样的数据传播:
[--1--4-----5-3-22---55-]
其中每个-
代表一个缺失值。
我将如何使用 来拟合插值函数scipy.interpolate
?
我一直在浏览文档中的scipy.interpolate
示例,但我无法弄清楚如何获取间隔不均匀的数据并对其进行插值,因为所有教程都使用 linspaces——间隔均匀。
例如,我有一些这样的数据传播:
[--1--4-----5-3-22---55-]
其中每个-
代表一个缺失值。
我将如何使用 来拟合插值函数scipy.interpolate
?
interpolate.interp1d适用于不均匀间隔的数据。例如,
import re
import numpy as np
import scipy.interpolate as interpolate
import matplotlib.pyplot as plt
text = '--1--4-----5-3-22---55-'
parts = [c for c in re.split(r'(-|\d+)', text) if c]
data = np.array([(x, int(y)) for x, y in enumerate(parts) if y != '-'])
x, y = data.T
f = interpolate.interp1d(x, y, kind='cubic')
newx = np.linspace(x.min(), x.max())
newy = f(newx)
plt.plot(newx, newy)
plt.scatter(x, y, s=20)
plt.show()
产量