У меня действительно большой набор данных от биения двух лазерных частот и считывания частоты биений с частотой. счетчик.
Проблема в том, что у меня много выбросов в моем наборе данных.
Фильтрация не возможна, так как фильтрация / удаление выбросов убивает ценную информацию для моего отклонения от аллана, которое я использую для анализа своей частоты биений.
Проблема с удалением выбросов состоит в том, что я хочу сравнить все отклонения трех разных частот биений. Если я сейчас удалю некоторые точки, у меня будет более короткая ось X, чем раньше, и моя ось X отклонения Аллана будет изменяться по-другому. (По сути, adev создает новую ось X, начиная с интервалов моей частоты дискретизации и заканчивая моим самым длинным временем измерения -> которое является моим самым высоким значением оси X частоты биений.)
Извините, если это сбивает с толку, я хотел предоставить как можно больше информации.
Так или иначе, до сих пор я получал все свое отклонение от Аллана и успешно удалял выбросы, разбивая мой список на интервалы и сравнивая все значения y каждого интервала со стандартным отклонением интервала.
Что я хочу изменить сейчас, так это то, что вместо удаления выбросов я хочу заменить их средним значением их предыдущих и следующих соседей.
Ниже вы можете найти мой тестовый код для списка с выбросами, кажется, есть проблема с использованием numpy где, и я действительно не понимаю, почему.
Ошибка указана как «объект numpy.int32 не имеет атрибута« где »». Нужно ли преобразовывать мой набор данных в структуру панды?
Код выполняет поиск значений выше / ниже моего порога, заменяет их на NaN, а затем заменяет NaN на мое среднее значение. На самом деле я не использую замену NaN, поэтому буду очень признателен за любую помощь.
l = np.array([[0,4],[1,3],[2,25],[3,4],[4,28],[5,4],[6,3],[7,4],[8,4]])
print(*l)
sd = np.std(l[:,1])
print(sd)
for i in l[:,1]:
if l[i,1] > sd:
print(l[i,1])
l[i,1].where(l[i,1].replace(to_replace = l[i,1], value = np.nan),
other = (l[i,1].fillna(method='ffill')+l[i,1].fillna(method='bfill'))/2)
так что я хочу, чтобы список / массив с выбросами был заменен средствами предыдущих / следующих соседей
сообщение об ошибке: объект 'numpy.int32' не имеет атрибута 'где'