Если я, например, есть массив:Нахождение точек поворота массива в Python
A = (0,2,3,4,5,2,1,2,3,4,5,6,7,8,7,6,5,4,5,6)
Это можно увидеть, что есть 4 точки поворота. (при A [4], A [6], A [13], A [17])
Как я могу использовать python для возврата числа поворотных точек?
import numpy as np
import scipy.integrate as SP
import math
def turningpoints(A):
print A
N = 0
delta = 0
delta_prev = 0
for i in range(1,19):
delta = A[i-1]-A[i] #Change between elements
if delta < delta_prev: #if change has gotten smaller
N = N+1 #number of turning points increases
delta_prev = delta #set the change as the previous change
return N
if __name__ == "__main__":
A = np.array([0,2,3,4,5,2,1,2,3,4,5,6,7,8,7,6,5,4,5,6])
print turningpoints(A)
В настоящее время эта система является ошибочной и, конечно же, не очень элегантной. Есть идеи?
Это решение не работает. Попробуйте [5, 6, 7, 7, 7, 6, 5] – Cardin
@ Cardin, вы говорите, что у этого есть два поворотных пункта вместо нуля? Что относительно [5, 6, 7, 7, 7, 8, 9]? У этого есть нуль или два (или что-то еще)? – Malvolio
Как и в случае, эта последовательность имеет 1 точку поворота, но ваш алгоритм не может ее обнаружить, поскольку предполагает, что изменение направления должно произойти немедленно. – Cardin