Я не думаю, что интерполяция - это то, что вам нужно, потому что, если вы интерполируете в шумных точках, она все равно будет шумной. В библиотеке scipy.ndimage
есть несколько хороших алгоритмов сглаживания (я покажу, что это простое сглаживание по Гауссу).
import plotly.graph_objects as go
import oceansdb
import numpy as np
import scipy.ndimage
Xa = np.linspace(29.005,29.405,200)
Ya = np.linspace(-93.6683,-93.2683,200)
db = oceansdb.ETOPO()
dcont = db['topography'].extract(lat=Xa, lon=Ya)
depth = dcont['height']
sigma = [4, 4]
print(sigma)
depthSmooth = scipy.ndimage.filters.gaussian_filter(depth, sigma)
fig = go.Figure(data=[go.Surface(z=depthSmooth, x=Xa, y=Ya)])
fig.show()
Вы можете изменить значение sigma
, чтобы изменить объем сглаживания (больше * 1006). * означает более сглаживание и список [sigmax, sigmay]
).