Comment découper efficacement un tableau en sous-ensembles qui se chevauchent, de manière à ce que pour
>>> N = 5
>>> L = 2 # could be any, less than N
>>> x = range(N)
le résultat attendu est
[[1,0],[2,1],[3,2],[4,3]]
Voici ce que j'ai essayé :
>>> [ 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
Elle produit le résultat souhaité, mais est-ce la meilleure façon de l'obtenir ?
Existe-t-il des fonctions numpy, itertools qui pourraient vous aider ?