我有一个数据集,显示如下
temp = [0.1, 1, 4, 10, 15, 20, 25, 30, 35, 40]
sg =[0.999850, 0.999902, 0.999975, 0.999703, 0.999103, 0.998207, 0.997047, 0.995649, 0.99403, 0.99222]
sg_temp = pd.DataFrame({'temp' : temp,
'sg' : sg})
temp sg
0 0.1 0.999850
1 1.0 0.999902
2 4.0 0.999975
3 10.0 0.999703
4 15.0 0.999103
5 20.0 0.998207
6 25.0 0.997047
7 30.0 0.995649
8 35.0 0.994030
9 40.0 0.992220
我想用样条插值法在0.001的范围内对0.1到40之间的所有值进行插值,并使这些点也出现在 Dataframe 中。我以前用过resample(),但似乎找不到这种情况下的等效方法。
我已经尝试过这个基于其他问题,但它不工作。
scale = np.linspace(0, 40, 40*1000)
interpolation_sg = interpolate.CubicSpline(list(sg_temp.temp), list(sg_temp.sg))
2条答案
按热度按时间aydmsdu91#
它对我来说非常好用。到底什么对你来说不好用呢?你是否正确地使用了返回的CubicSpline来生成插值?还是有某种错误?
基本上,通过将新的x值(
scale
)插入到返回的CubicSpline函数中,可以获得插值y值:我认为这就是问题所在,你可能期望插值函数返回值,但是它返回的是一个函数,你用这个函数来得到你的值。
如果我把这个画出来,我会得到这个图:
l5tcr1uw2#
用插值的结果调用
scale
:视觉输出:
地块代码