2016-04-01 2 views
0

У меня есть массив данных, который при построении плато на максимальных значениях. Я хотел бы создать гауссовскую подгонку для этих данных, чтобы я мог грубо приблизиться к тому, что данные будут без плато.Python Установите gaussian для неполного массива данных

Это то, что выглядит как данные:

Saturated Data

Я пытаюсь использовать scipy.optimize.curve_fit - но я не знаю, как достичь конечного результата, как я хочу, чтобы соответствовать гауссовой при игнорировании насыщенных данных на плато.

ответ

1

Без дополнительной информации о вашем собственном решении это немного захватывает в темноте, но я думаю, что numpy.ma может быть тем, что вам нужно. С его помощью вы можете замаскировать части своих данных, и в документации даже есть это сказать:

Во многих случаях наборы данных могут быть неполными или испорченными присутствием недействительных данных. Например, датчик может не выполнить запись данных или записать недопустимое значение. Модуль numpy.ma обеспечивает удобный способ решения этой проблемы, введя маскированные массивы.

Нанесите маску, которая скрывает насыщенные детали и проведет установку. Например:

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) 

, где, очевидно, вы использовали бы уровень насыщения как порог.