我正在使用scipy.interpolate.interp2d函数,它返回了预期的结果,但是有毫秒级的延迟。有什么方法可以加速它吗?
参数:s = 0.001和t = 4
vols =来自url https://s3.eu-west-2.amazonaws.com/alquadri.com/uploads/vols_data.txt的数据
下面是我正在使用的函数。
from scipy.interpolate import interp2d
import numpy as np
import pandas as pd
def InterpVols2d(vols, s, t):
df = pd.DataFrame(vols, columns=['x','y','z'])
VolsPivotTable = df.pivot_table(values='z', index='y', columns='x').ffill().bfill() ## Forward then back fill
# print(VolsPivotTable)
### Get the Matrix from the volumes data
CapFloorVolMatrixNP = np.array(vols)
x = np.unique(CapFloorVolMatrixNP[:,0])
y = np.unique(CapFloorVolMatrixNP[:,1])
Z = []
for counter, item in enumerate(y):
Z.append(VolsPivotTable.iloc[counter,:].tolist())
z = np.array(Z)
### Interp2d
interp2dData = interp2d(x, y, z, kind='linear')(s,t)[0] #fill_value=np.nan
return interp2dData
1条答案
按热度按时间fdbelqdn1#
不。它是在构建时构建样条曲线拟合,这需要时间。
interpn/RGI的启动速度更快。