У меня есть облако точек данных (x, y), которые я хотел бы интерполировать и сгладить.
В настоящее время я использую scipy:
from scipy.interpolate import interp1d
from scipy.signal import savgol_filter
spl = interp1d(Cloud[:,1], Cloud[:,0]) # interpolation
x = np.linspace(Cloud[:,1].min(), Cloud[:,1].max(), 1000)
smoothed = savgol_filter(spl(x), 21, 1) #smoothing
Это работает довольно хорошо, за исключением того, что я хотел бы дать некоторые веса точкам данных, указанным в interp1d
. Любое предложение для другой функции, которая обрабатывает это?
По сути, я думал, что мог бы просто умножить вхождение каждой точки облака в соответствии с ее весом, но это не очень оптимизировано, так как это значительно увеличивает количество точек для интерполяции и замедляет алгоритм ..