使用SciPy插入不均匀的数据

时间:2013-07-04 00:00:22

标签: python numpy scipy curve-fitting interpolation

我一直在查看documentation for scipy.interpolate上的示例,我无法弄清楚如何获取不均匀间隔的数据并对其进行插值,因为所有教程都使用linspaces - 均匀间隔。

例如,我有一些像这样传播的数据:

[--1--4-----5-3-22---55-]

其中每个-表示缺失值。

如何使用scipy.interpolate

来为此插入插值函数?

1 个答案:

答案 0 :(得分:3)

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()

的产率 enter image description here