Используя некоторые экспериментальные данные, я не могу на всю жизнь разобраться, как использовать splrep для создания B-сплайна. Данные здесь: http://ubuntuone.com/4ZFyFCEgyGsAjWNkxMBKWDКак использовать scipy.interpolate.splrep для интерполяции кривой?
Вот отрывок:
#Depth Temperature
1 14.7036
-0.02 14.6842
-1.01 14.7317
-2.01 14.3844
-3 14.847
-4.05 14.9585
-5.03 15.9707
-5.99 16.0166
-7.05 16.0147
и вот сюжет его с глубиной от у и температуры на х:
Вот мой код:
import numpy as np
from scipy.interpolate import splrep, splev
tdata = np.genfromtxt('t-data.txt',
skip_header=1, delimiter='\t')
depth = tdata[:, 0]
temp = tdata[:, 1]
# Find the B-spline representation of 1-D curve:
tck = splrep(depth, temp)
### fails here with "Error on input data" returned. ###
Я знаю, что делаю что-то кровоточащее глупо, но я просто не вижу его.
Для сортировки данных вы, вероятно, должны использовать функцию 'np.argsort()': indexs = np.argsort (depth); depth = глубина [индексы]; temp = temp [индексы] '. Это избавит вас от переполнения списка кортежей. –
@FerdinandBeyer Это гораздо лучшее решение, чем мое! Теперь редактируем его. –
У меня возникла ошибка, когда я пытался сделать 'depth [индексы]', но, пожалуйста, дайте мне знать, если есть более хороший способ, чем '[depth [i] для i в индексе]'. В любом случае это гораздо более чистое решение, спасибо. –