3

次のデータセットがあります

angles =np.arange(-90,91,15)
n_col_cnts =([ 0.08692008,0.46557143,0.7282595,0.89681908,0.97057961,1.,0.99488705,0.91823478,0.84187586,  0.73110934,0.53363229,0.25338418,0.01328528])

optimize.leastsq()fromを使用してこのデータにガウス分布を当てはめたいのですscipyが、つまずきました。ここから私が試みたことはここにあります

fitfunc = lambda p, x: p[0]*math.exp(-((x-p[1])/p[2])**2) #Target function
errfunc = lambda p, x, y: fitfunc(p, x) - y # Distance to the target function
p0 = [1., 0., 30.] # Initial guess for the parameters
fit, success = optimize.leastsq(errfunc, p0[:], args=(angles,n_col_cnts))

ただし、エラーメッセージが表示されます

TypeError: only length-1 arrays can be converted to Python scalars

私にはわかりません。私は何を間違えましたか?

4

2 に答える 2

1

Janne が言うように、独立変数として大きな多次元 'x' をサポートできる必要があります。これは実際にはそれらの行列であり、昨日調べるのにかなり時間がかかりました。その結果、完全にベクトル化する必要があるため、行列の要素の指数関数を許可するために np.exp を使用する必要があります。べき行列ではありません。パラメータは「m」個のスペースを取ることができますが、渡す関数では、独立変数は1 個しか使用できません。

私はこれをしたくありませんが、誰かが昨日同様の質問をしたので、興味があれば非常に詳細な回答を書きました:

3D データとパラメーターを使用した Scipy でのカーブ フィッティング

于 2013-07-30T13:52:35.173 に答える