3

いくつかの実験データを使用して、splrep を使用して B スプラインを作成する方法を、私の人生で解決することはできません。データはこちら: http://ubuntuone.com/4ZFyFCEgyGsAjWNkxMBKWD

ここに抜粋があります:

#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

これは、y に深さ、x に温度をプロットしたものです。 ここに画像の説明を入力

これが私のコードです:

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. ###

私は自分がひどくばかげたことをしていることを知っていますが、それを見ることができません。

4

1 に答える 1

6

最小値から最大値までの値が必要です:)。@別のベンにとっては問題にならないはずですが、将来の読者は注意してください。深度がnumpy配列ではなくリストでdepth[indices]ある場合にスローされます。TypeError

>>> indices = np.argsort(depth)
>>> depth = depth[indices]
>>> temp = temp[indices]
>>> splrep(depth, temp)
(array([-7.05, -7.05, -7.05, -7.05, -5.03, -4.05, -3.  , -2.01, -1.01,
        1.  ,  1.  ,  1.  ,  1.  ]), array([ 16.0147    ,  15.54473241,  16.90606794,  14.55343229,
        15.12525673,  14.0717599 ,  15.19657895,  14.40437622,
        14.7036    ,   0.        ,   0.        ,   0.        ,   0.        ]), 3)

argsort私の醜い「値を圧縮し、圧縮をソートし、値を再割り当てする」方法の代わりに、@FerdinandBeyer にヒントを与えてください。

于 2012-04-16T08:13:52.797 に答える