Вот способ использования nummpy
:
a = [1,1,2,2,4,4]
[0] + np.cumsum(np.clip(np.diff(a), 0, 1)).tolist()
[0, 0, 1, 1, 2, 2]
Или для другого примера:
a = [1,1,1,1,4,4,4,4]
[0] + np.cumsum(np.clip(np.diff(a), 0, 1)).tolist()
[0, 0, 0, 0, 1, 1, 1, 1]
Подробности
a = [1,1,2,2,4,4]
Получите первое различие массива с помощью np.diff
np.diff(a)
array([0, 1, 0, 2, 0])
И используйте np.clip
, чтобы ограничить значения между 0
и 1
:
np.clip(np.diff(a), 0, 1)
array([0, 1, 0, 1, 0])
Наконец, возьмите np.cumsum
и добавьте 0
в начале, так как разница даст вам массив длины n-1
:
[0] + np.cumsum(np.clip(np.diff(a), 0, 1)).tolist()
[0, 0, 1, 1, 2, 2]