Это зависит от того, как вы определяете «шум» и как это вызвано. Поскольку вы не предоставили много информации о своем случае, я возьму ваш вопрос как «как сделать кривую гладкой». Фильтр Калмана может это сделать, но это слишком сложно, я бы предпочел простую БИХ-фильтр
import matplotlib.pyplot as plt
mu, sigma = 0, 500
x = np.arange(1, 100, 0.1) # x axis
z = np.random.normal(mu, sigma, len(x)) # noise
y = x ** 2 + z # data
plt.plot(x, y, linewidth=2, linestyle="-", c="b") # it include some noise
После фильтра
from scipy.signal import lfilter
n = 15 # the larger n is, the smoother curve will be
b = [1.0/n] * n
a = 1
yy = lfilter(b,a,y)
plt.plot(x, yy, linewidth=2, linestyle="-", c="b") # smooth by filter
lfilter
является функцией от scipy.signal ,
Кстати, если вы хотите использовать фильтр Калмана для сглаживания, scipy также предоставляет example. Фильтр Калмана также должен работать над этим случаем, просто не столь необходимым.
Фильтр IIR уменьшил шум. Спасибо за это и ссылку на фильтр Kalman. – PiccolMan