Você pode compartilhar algumas ideias de como encontrar pontos de curva (locais marcados em laranja) como mostrado na imagem:
Eu tentei este código:
result = []
for i in range(len(df)):
if i == 0 or df['y'].iloc[i] != df['y'].iloc[i - 1]:
result.append(df.iloc[i])
continue
if i < len(df) - 1 and df['y'].iloc[i] != df['y'].iloc[i + 1]:
result.append(df.iloc[i])
Mas o problema é que meu 'y' nem sempre é igual entre os pontos de interrupção e retorna muitos valores. Você poderia me dar alguma dica sobre como atingir meu objetivo?
Dados usados para a imagem:
time = np.arange(0, 2200, 100)
values = np.array([-0.1, 0, 0.13, 0.27, 0.27, 0.4, 0.27, 0.27, 0.13, 0.13,
0.01, 0.01, -0.13, -0.13, -0.27, -0.4, -0.4, -0.27, -0.13, -0.13, 0, 0])
full_time = np.arange(0, 2200, 1)
full_values = np.interp(full_time, time, values)
Aqui está o código completo:
Saída: