Итак, главная проблема в этих трех строках
forwards = forwards[:len(lefts)][:len(rights)]
lefts = lefts[:len(forwards)]
rights = rights[:len(forwards)]
вы усекаете массивы.
Итак, чтобы подтвердить окончательные формы массивов, сделайте -
print(len(forwards),len(lefts),len(rights))
// those 3 lines
print(len(forwards),len(lefts),len(rights))
Вы увидите разницу.
Также попробуйте запустить код без этих трех строк, массивы будут 200 МБ:)
P.S. Я бы посоветовал вам сделать усечение вручную -
forwards = forwards[:my_number]
и т. Д.