Функция кубического сплайна в scipy.interpolate возвращает numpy.ndarray - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно использовать CubicSpline для интерполяции между точками.Это моя функция

cs = CubicSpline(aTime, aControl)
u = cs(t)   # u is a ndarray of one element.

Я не могу преобразовать u в число с плавающей точкой.uu = float(u) или uu = float(u[0]) не работает в функции.Я могу преобразовать u в число с плавающей точкой в ​​оболочке float(u).Это не должно работать, потому что я не предоставил индекс, но я получаю ошибку, если я использую u[0].Я прочитал кое-что о np.squeeze.Я попробовал, но это не помогло.

Я добавил оператор print ("u=",u) после u=cs(t).Результат был

u= [  1.88006889e+09   5.39398193e-01   5.39398193e-01]

Как это может быть?Я ожидаю 1 значение.Второе и третье числа выглядят правее.

1 Ответ

0 голосов
/ 10 июня 2018

Я нашел проблему.Ошибка программирования, конечно, но сообщения об ошибках, которые я получил, были очень вводящими в заблуждение.Я вызывал функцию интерполяции с 3 значениями, чтобы она возвращала три значения.Почему я не смог получить только одно потом, все еще остается загадкой, но теперь, когда я вызываю интерполяцию только с одним значением, я получаю одно значение с плавающей точкой, как и ожидалось.В целом это все равно не помогло, так как функция interpolate1d слишком медленная.Я написал свою собственную функцию кубической интерполяции, которая НАМНОГО быстрее.

Опять же, проблема с ошибками программирования и плохие сообщения об ошибках были.

...