Python 什么';添加或减去两条插值曲线的最佳方法是什么?

Python 什么';添加或减去两条插值曲线的最佳方法是什么?,python,scipy,interpolation,Python,Scipy,Interpolation,在Python中添加或减去2条插值曲线的最佳方法是什么。一个例子是在国债利率上增加信用利差。这两条曲线没有相同的术语点。我可以通过获得特定的男高音来重建曲线,但我希望有更好的方法 import scipy as sc ATenor = [0.25,0.5,1,5,10,20] ARate = [0.02,0.022,0.025,0.03,0.035,0.039] ACurve = sc.interpolate.interp1d(ATenor,ARate) BTenor = [0.25,1,4,5

在Python中添加或减去2条插值曲线的最佳方法是什么。一个例子是在国债利率上增加信用利差。这两条曲线没有相同的术语点。我可以通过获得特定的男高音来重建曲线,但我希望有更好的方法

import scipy as sc
ATenor = [0.25,0.5,1,5,10,20]
ARate = [0.02,0.022,0.025,0.03,0.035,0.039]
ACurve = sc.interpolate.interp1d(ATenor,ARate)
BTenor = [0.25,1,4,5,7,10,15,20]
BRate = [0.025,0.28,0.032,0.036,0.038,0.042,0.04,0.038]
BCurve = sc.interpolate.interp1d(BTenor,BRate)
CCurve = ACurve + BCurve  # <-- This does not work but to get the idea across
将scipy导入为sc
ATenor=[0.25,0.5,1,5,10,20]
阿拉伯酸=[0.02,0.022,0.025,0.03,0.035,0.039]
ACurve=sc.interpolate.interp1d(ATenor,ARate)
BTenor=[0.25,1,4,5,7,10,15,20]
BRate=[0.025,0.28,0.032,0.036,0.038,0.042,0.04,0.038]
b曲线=sc.interpolate.interp1d(b曲线,b曲线)

CCurve=ACurve+BCurve 35;如果要创建新的
interp1d
对象,则可以合并期限数组(x轴)并重新计算速率值(y轴)。例如,此代码将执行以下操作:

ABTenor = sorted(set(ATenor + BTenor))              # Merge points on the x-axis.
ABCurve = [ACurve(x) + BCurve(x) for x in ABTenor]  # Compute y values.
ABCurve = scipy.interpolate.interp1d(ABTenor, ABCurve)
或者,您可以创建惰性求值函数:

def add_curves(A, B):
    def compute(x):
        return A(x) + B(x)
    return compute

ABCurve = add_curves(ACurve, BCurve)
# ABCurve(10.0) will call ACurve(10.0) and BCurve(10.0) and sum the results.

如果要创建新的
interp1d
对象,则可以合并期限数组(x轴)并重新计算速率值(y轴)。例如,此代码将执行以下操作:

ABTenor = sorted(set(ATenor + BTenor))              # Merge points on the x-axis.
ABCurve = [ACurve(x) + BCurve(x) for x in ABTenor]  # Compute y values.
ABCurve = scipy.interpolate.interp1d(ABTenor, ABCurve)
或者,您可以创建惰性求值函数:

def add_curves(A, B):
    def compute(x):
        return A(x) + B(x)
    return compute

ABCurve = add_curves(ACurve, BCurve)
# ABCurve(10.0) will call ACurve(10.0) and BCurve(10.0) and sum the results.
酷!里面的def compute(x)我以前从未见过。这个方法叫什么来做更多的研究,比如“x”是如何定义的?我可能不得不使用第一种方法,因为它更快,我需要在嵌套的随机投影中运行一百万次。搜索闭包。这里,
compute
只是一个变量的函数
x
,这就是它的定义。但是,它可以访问父函数的局部变量
A
B
,即使该函数已完成执行。同时检查lambda函数。酷!里面的def compute(x)我以前从未见过。这个方法叫什么来做更多的研究,比如“x”是如何定义的?我可能不得不使用第一种方法,因为它更快,我需要在嵌套的随机投影中运行一百万次。搜索闭包。这里,
compute
只是一个变量的函数
x
,这就是它的定义。但是,它可以访问父函数的局部变量
A
B
,即使该函数已完成执行。同时检查lambda函数。