Интерполяция случайного массива с помощью splprep и splev в scipy выдает ошибку - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь получить гладкую многомерную кривую путем интерполяции случайного массива в Scipy, используя interpolate.splprep и interpolate.splev. Проблема отличается от этого вопроса , поскольку у меня нет последовательных повторяющихся точек. Вот код:

N = npr.rand(10,3)
tck, u = splprep(N.T)
u_new = np.linspace(0,1,1/100)
out = splev(u_new, tck)

Сципи выдает эту ошибку:

ValueError                                Traceback (most recent call last)
<ipython-input-103-61bf6eb7e435> in <module>
      2 tck, u = splprep(N.T)
      3 u_new = np.linspace(0,1,1/100)
----> 4 out = splev(u_new, tck)

c:\programdata\anaconda3\envs\stim\lib\site-packages\scipy\interpolate\fitpack.py in splev(x, tck, der, ext)
    366         return tck(x, der, extrapolate=extrapolate)
    367     else:
--> 368         return _impl.splev(x, tck, der, ext)
    369 
    370 

c:\programdata\anaconda3\envs\stim\lib\site-packages\scipy\interpolate\_fitpack_impl.py in splev(x, tck, der, ext)
    586     if parametric:
    587         return list(map(lambda c, x=x, t=t, k=k, der=der:
--> 588                         splev(x, [t, c, k], der, ext), c))
    589     else:
    590         if not (0 <= der <= k):

c:\programdata\anaconda3\envs\stim\lib\site-packages\scipy\interpolate\_fitpack_impl.py in <lambda>(c, x, t, k, der)
    586     if parametric:
    587         return list(map(lambda c, x=x, t=t, k=k, der=der:
--> 588                         splev(x, [t, c, k], der, ext), c))
    589     else:
    590         if not (0 <= der <= k):

c:\programdata\anaconda3\envs\stim\lib\site-packages\scipy\interpolate\_fitpack_impl.py in splev(x, tck, der, ext)
    599 
    600         if ier == 10:
--> 601             raise ValueError("Invalid input data")
    602         if ier == 1:
    603             raise ValueError("Found x value not in the domain")

ValueError: Invalid input data

...