У меня есть следующее
U = np.array([1., 0., 0., 1., 0., 0., 1., 0., 1., 0.])
c = iter(range(2, len(U)))
result = [float(next(c)) if x == 1 else x for x in U]
Это дает
[2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 4.0, 5.0, 6.0, 0.0
] Однако я хочу, чтобы, когда элемент слева обозначал число, то, что "l oop" on становится той же меткой.
Итак, это [2.0, 0.0, 0.0, 3.0, 0.0, 0.0, 4.0, 4.0, 4.0, 0.0
]
for-l oop, которое описывает это следующим образом:
U=np.array([1., 0., 0., 1., 1., 0., 1., 1., 1.])
l=2
for i in range(len(U[:])):
i+1 #for simplicity I skipped the first one
if U[i]==1:
if U[i-1]!=0:
U[i]=U[i-1]
else:
U[i]=l
l+=1
Возвращает
array([1., 0., 0., 2., 2., 0., 3., 3., 3.])