我正在尝试插值三维数据。我的数据是:https://jumpshare.com/s/Xeezpl0LpdcqtiQayoa5
但是我遇到的问题是interpolate.bisplrep
返回nan(tck
变量的第二个索引)。我的代码是:
import numpy as np
import pandas as pd
import numpy.ma as ma
from scipy.interpolate import griddata,bisplrep,bisplev
vol = pd.read_csv('data1.csv',index_col='dte')
T=np.array(vol.index)
K=np.array(vol.columns)
valid_vol=ma.masked_invalid(vol).T
Ti=np.linspace(float(T.min()),float(T.max()),len(T))
Ki=np.linspace(float(K.min()),float(K.max()),len(K))
Ti,Ki = np.meshgrid(Ti,Ki)
T,K = np.meshgrid(T,K)
valid_Ti = Ti[~valid_vol.mask]
valid_Ki = Ki[~valid_vol.mask]
valid_vol = valid_vol[~valid_vol.mask]
iv_interpol=griddata((valid_Ti,valid_Ki), valid_vol, (Ti, Ki),method='linear')
tck = bisplrep(Ti, Ki, iv_interpol)
T_new, K_new = np.mgrid[Ti.min():T.max():80j, Ki.min():Ki.max():80j]
znew = bisplev(T_new[:,0], K_new[0,:], tck)
字符串
我需要znew是一个函数,我可以插入值znew(a,b),然后得到一个输出。
1条答案
按热度按时间5w9g7ksd1#
您正在阅读一个缺少数据的数据文件。此缺少的数据将被视为NaN。然后您试图对其中包含NaN的数据进行样条。(尝试打印出
vol
)。为什么你的文件缺少数据?你希望这些字段用一些默认字段填充吗?