Если я собираю некоторые экспериментальные данные и загружаю их в Python, что является наиболее эффективным методом удаления «стационарных» данных? Ниже приведен графический пример того, что у меня есть. Я хочу удалить элементы массива z
, где градиент почти равен 0 (т. Е. Около первых 60 элементов).Python, удаляющий «стационарные» данные из массива
Тогда у меня остался бы шумный кривый синуса для последующего анализа.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,5,60)
z = np.zeros(120)
z[0:60] = 1e-2*x + 10
z[60:120] = np.sin(x) + 0.1*np.random.randn(len(x)) + 10
# plt.figure()
# plt.plot(z)
# plt.show()
Edit: Пробовал решение Парадизо: z = z[ np.gradient(z) > 1E-1 ]
Аналогичные результаты для установки > 1e-2
, > 1e-5
и т.д.
Исходные данные:
После implementin г раствор:
У меня есть несколько партий данных. Могут ли «малые значения производной» быть малыми по отношению к кривой sin? например если бы у меня было '0.01 * np.sin (x)', а также '27 * np.sin (x)' для разных партий, а часть '1e-2 * x + 10' осталась прибл. то же самое, как с этим бороться? –