У меня есть два вектора (a
, b
) и я хочу создать третий (c
) из этих двух. Все они должны иметь одинаковую длину. Если в векторе a
есть ноль (0), значение вектора b
с этим индексом, где a
- ноль, должно суммироваться со следующими значениями до значения в векторе a
равен одиннадцати (11) и затем запоминает сумму этих значений в векторе c
. Остальные значения c
должны быть равны нулю (0).
a=[0, 11, 0, 11, 0, 0, 0, 11]
b=[1.1, 1.1, 9, 9, 9, 6.6, 6.6, 9]
Таким образом, вектор c
должен выглядеть следующим образом:
c=[0, 2.2, 0, 18, 0, 0, 0, 31.2]
Я создаю следующий код и это работает почти для этого случая, за исключением последнего значения (оно выводится как последнее значение 15.6
). И мне также нужно что-то более эффективное, тогда могло бы случиться, что вектор a
имеет более 3 нулей друг за другом.
for w in range(0,len(a)):
if a[w]==0 and a[w+1]!=0:
c[w+1]=b[w]+b[w+1]
elif a[w]==0 and a[w+1]==0 and a[w+2]!=0:
c[w+2]=b[w]+b[w+1]+b[w+2]
elif a[w]==0 and a[w+1]==0 and a[w+2]==0:
c[w+3]=b[w]+b[w+1]+b[w+2]+b[w+3]