Есть ли способ интерполировать ряды с повторяющимися значениями, используя matplotlib? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь интерполировать ряды ax / y, используя matplotlib.Проблема, с которой я сталкиваюсь, заключается в том, что spline и interp1d терпят неудачу, потому что у меня есть повторяющиеся значения в массивах x и y.

Я пытался использовать функции spline и interp1d из scipy,но оба не удаются из-за повторяющихся значений

x1 = [0.82 0.82 0.82 0.82 0.82 0.82 0.83 0.83 0.83 0.83 0.83 0.83 0.83]
y1 = [0.93 0.93 0.93 0.93 0.94 0.94 0.94 0.94 0.94 0.94 0.94 0.94 0.94]
f = interp1d(x1, y1, kind='cubic')   #this gives an error: Expect x to be a 1-D sorted array_like.



#another thing I tried

xnew = np.linspace(x1.min(),x1.max(),300)
splined = spline(x1,y1,xnew)    #this gives an error: Matrix is singular

Я ожидаю, что интерполированное значение y будет постепенно увеличиваться с увеличением x.Так, например, соответствующее значение y для x = 0,82 будет 0,931, 0,932 и т. Д. В конце концов моя цель - получить плавную кривую.

1 Ответ

1 голос
/ 22 мая 2019

Как насчет использования полинома?

np.poly1d(np.polyfit(x1, y1, 2))(new_x) # 2 for second degree
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...