2016-04-01 6 views
0

Ich habe eine Reihe von Daten, die, wenn geplottet, Plateaus bei den maximalen Werten. Ich würde gerne eine Gauß'sche Anpassung für diese Daten erzeugen, so dass ich eine grobe Annäherung an die Daten ohne ein Plateau haben kann.Python Passen Sie eine Gaussian auf eine unvollständige Datenreihe

Dies ist, was die Daten wie folgt aussieht:

Saturated Data

Ich versuche scipy.optimize.curve_fit zu verwenden - aber ich weiß nicht, wie das Endergebnis zu erreichen, wie ich eine Gaußsche passen wollen wenn die gesättigten Daten im Plateau ignoriert werden.

Antwort

1

Ohne weitere Details zu Ihrer eigenen Lösung ist es ein bisschen im Dunkeln greifen, aber ich denke, numpy.ma könnte sein, was Sie suchen. Damit können Sie Teile Ihrer Daten maskieren, und die Dokumentation sagt sogar Folgendes:

In vielen Fällen können Datasets unvollständig oder durch das Vorhandensein ungültiger Daten beschädigt sein. Zum Beispiel könnte ein Sensor keine Daten aufgezeichnet oder einen ungültigen Wert aufgezeichnet haben. Das Modul numpy.ma bietet eine praktische Möglichkeit, dieses Problem zu lösen, indem maskierte Arrays eingeführt werden.

Wenden Sie eine Maske an, die die gesättigten Teile verbirgt und führen Sie Ihre Anpassung dagegen. Zum Beispiel:

In [4]: data = np.arange(10) 

In [5]: np.ma.masked_greater_equal(data, 6) 
Out[5]: 
masked_array(data = [0 1 2 3 4 5 -- -- -- --], 
      mask = [False False False False False False True True True True], 
     fill_value = 999999) 

wo Sie natürlich Ihren Sättigungsgrad als Schwelle verwenden würden.