Как эффективно разрезать массив в перекрывающихся подрешеток, так что дляфрагмент массива в отмененных перекрывающихся подмассивов
>>> N = 5
>>> L = 2 # could be any, less than N
>>> x = range(N)
ожидаемый результат
[[1,0],[2,1],[3,2],[4,3]]
Вот что я пытался:
>>> [ x[i:i-L:-1] for i in range(L-1,len(x)) ]
[[], [3, 2], [4, 3], [5, 4]] # wrong
>>> [ x[i:i-L:-1] for i in range(L,len(x)) ]
[[2, 1], [3, 2], [4, 3]] # wrong
>>> [ x[i:i-L if i-L >= 0 else None:-1] for i in range(L-1,len(x)) ]
[[1, 0], [2, 1], [3, 2], [4, 3]] # correct
Он производит желаемый результат, но лучший способ его достижения?
Есть несколько функций numpy, itertools, которые могут помочь?
Итак, это входной список или массив NumPy? Является ли ожидаемый результат списком или массивом? В названии указано 'array', тогда как образец -' range (N) ', который создает список. – Divakar
Спасибо, я ожидаю, что это будет тот, для которого лучшее решение существует. – tarashypka