Как согласовать исходную длину значений после сглаживания кривой с помощью UnivariateSpline - PullRequest
0 голосов
/ 05 августа 2020

У меня есть набор данных, заполненный шумом. Я сделал некоторую интерполяцию кривой, используя scipy UnivariateSpline, но после этого длина исходной и интерполированной кривой больше не совпадает. введите описание изображения здесь

Я применил этот код ниже.

x = df[df.unit==1].cycles
y = df[df.unit==1].S8

from scipy.interpolate import UnivariateSpline
import numpy as np

s = UnivariateSpline(df[df.unit==1].cycles, df[df.unit==1].S8, s=5)
xs = np.linspace(0, len(y))
ys = s(xs)

print(len(x),len(y))
> 192,192

print(len(xs),len(ys))
> 50,50

Мы видим, что длина исходных данных равна 192, но после интерполяции она составляет всего 50. Я хочу вернуть новые данные в фрейм данных. Если сделать это как есть, возвращается ValueError: Length of values does not match length of index, как мне это сделать? Спасибо!

================ ОБНОВЛЕНИЕ ==================

Мы можем просто изменить linspace на arange и установить значение желаемой длины

s = UnivariateSpline(df[df.unit==1].cycles, df[df.unit==1].S8, s=5)
xs = np.arange(0, len(y))
ys = s(xs)

print(len(xs),len(ys))
> 192,192
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...