通常、私はScipy.optimize.curve_fitを使用してカスタム関数をデータに合わせます。 この場合のデータは、常に1次元配列でした。Python:NxM配列のScipyのcurve_fit?
2次元配列にも同様の機能がありますか?
たとえば、私は10x10個の配列を持っています。次に、私はいくつかのものを行い、10×10のnumpy配列を作成する関数を持っています。その結果得られる10x10配列が入力配列に最もよくフィットするように関数に適合させたいと思います。そのNEWDATAデータにできるだけ近くなるよう
多分例は良好である:)今
data = pyfits.getdata('data.fits') #fits is an image format, this gives me a NxM numpy array
mod1 = pyfits.getdata('mod1.fits')
mod2 = pyfits.getdata('mod2.fits')
mod3 = pyfits.getdata('mod3.fits')
mod1_1D = numpy.ravel(mod1)
mod2_1D = numpy.ravel(mod2)
mod3_1D = numpy.ravel(mod3)
def dostuff(a,b): #originaly this is a function for 2D arrays
newdata = (mod1_1D*12)+(mod2_1D)**a - mod3_1D/b
return newdata
及びbは、取り付けられなければなりません。私がこれまでに得たもの
:
data1D = numpy.ravel(data)
data_X = numpy.arange(data1D.size)
fit = curve_fit(dostuff,data_X,data1D)
しかし、印刷フィットのみ
(array([ 1.]), inf)
私は配列内のいくつかのNaNを持っている、多分問題のthats私に与えますか?最初にトリッキーに見えるかもしれません単数xy
に座標ペア(x, y)
変換g(x, y, ...) --> f(xy, ...)
:
サンプルデータがありますか? – Cleb
データとその関数の出力を平坦化しようとしましたか?これにより、curve_fitで動作するようにそれらを1次元にする必要があります。 – kazemakase
これはうまくいくとは思えません。私の場合、NxMのnumpy配列はイメージを表します。私がそれを平坦化すると、エッジで非常に急なジャンプがあるかもしれませんが、それはフィッティングに悪いかもしれません。 – Pythoneer