Вот одно решение на основе NumPy -
def extend_arrs(x,y,frame):
# Convert to arrays
frame = np.asarray(frame)
x = np.asarray(x)
y = np.asarray(y)
l = frame[-1]-frame[0] + 1
id_ar = np.zeros(l,dtype=int)
id_ar[frame-frame[0]] = 1
idx = id_ar.cumsum()-1
return np.r_[frame[0]:frame[-1]+1],x[idx], y[idx]
Пробный прогон -
In [164]: x
Out[164]: [80.1, 80.2, 80.1, 80.2, 80.3]
In [165]: y
Out[165]: [40.1, 40.2, 40.1, 40.2, 40.3]
In [166]: frame = [5,6,8,11,13]
In [167]: extend_arrs(x,y,frame)
Out[167]:
(array([ 5, 6, 7, 8, 9, 10, 11, 12, 13]),
array([80.1, 80.2, 80.2, 80.1, 80.1, 80.1, 80.2, 80.2, 80.3]),
array([40.1, 40.2, 40.2, 40.1, 40.1, 40.1, 40.2, 40.2, 40.3]))
# Output in tabular format for quick reference
In [168]: np.c_[extend_arrs(x,y,frame)]
Out[168]:
array([[ 5. , 80.1, 40.1],
[ 6. , 80.2, 40.2],
[ 7. , 80.2, 40.2],
[ 8. , 80.1, 40.1],
[ 9. , 80.1, 40.1],
[10. , 80.1, 40.1],
[11. , 80.2, 40.2],
[12. , 80.2, 40.2],
[13. , 80.3, 40.3]])