2012-02-06 13 views
3

データの配列に関数をフィットさせ、この関数の方程式の最適係数を取得する必要があります。私はのcurve_fitメソッドをscipyライブラリから使います。これは、最小二乗法に基づいています。Python scipy:**またはpow()のサポートされていないオペランドタイプ: 'list'と 'list'

import numpy as np 
from scipy.optimize import curve_fit 

#This is my function from which i need to get optimal coefficients 'a' and 'b' 
def func(x, a, b): 
return a*x**(b*x) 

#the arrays of input data        
x = [1,2,3,4,5] 
y =[6,7,8,9,10] 

#default (guess) coefficients 
p0 = [1, 1] 

popt, pcov = curve_fit(func, x, y, p0) 
print popt 

それは、次のエラー

TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'list'

を返します。しかし、私はノー電力動作で、他のより単純な関数を使用するとき、それはに番号をbulidしようとしなければならない

def func(x, a, b): 
return a*x + b 

の作品入力データの配列全体の威力

何をすべきか?助けてください...

+2

どのように正確に別の配列の力で配列を配置しますか? –

答えて

4

あなたは要素的なパワーアップの後にいるようですね?

のようになります。各iについては?a*x[i]**(b*x[i])?その場合

、あなたはnp.power機能を使用する必要があります。

def func(x,a,b): 
    return a*np.power(x,b*x) 

そして、それが動作します。

(脇に、xyをリストからnumpy配列に変換することは意味があります:np.array(x))。

+0

** np.power()**が完成しました!どうもありがとう! – Vladimir

関連する問題