#python #python-3.x #smoothing
#python #python-3.x #сглаживание
Вопрос:
Я пытаюсь сформировать плавную кривую, используя точки данных (96 точек данных), используя следующий код. y=lol — это список, содержащий точки данных.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import *
x = np.arange(1,97,1)
y = lol
def smooth(y, box_pts):
box = np.ones(box_pts)/box_pts
y_smooth = np.convolve(y, box, mode='same')
return y_smooth
plt.rcParams["figure.figsize"] = (25,10)
plot(x,y,'o')
plot(x,smooth(y,12), 'r-', lw=2)
#plot(x, smooth(y,19), 'g-', lw=2)
Однако на краях кривой значение кривой падает до очень низкого значения. Как мне решить эту проблему. Я получаю кривую, как показано ниже-
Ответ №1:
Попробуйте использовать mode=»valid»:
y_smooth = np.convolve(y, box, mode='valid')
Это устранит граничные эффекты, но форма вывода будет отличаться от длины ввода. См. Документ для получения дополнительной информации.
Комментарии:
1. Это выдает ошибку — x и y должны иметь одинаковое первое измерение, но иметь формы (96,) и (85,) Как мне указать форму в этом случае?
2. Просто постройте график значений y, постройте график (y,’o’) и постройте график (сглаживание (y,12), ‘r-‘, lw = 2)