У меня есть набор данных, заполненный шумом. Я сделал некоторую интерполяцию кривой, используя 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