Wie effektiv ein Array in überlappende Teilfelder schneiden, so dass fürScheibe Array in umgekehrter überlappende Subarrays
>>> N = 5
>>> L = 2 # could be any, less than N
>>> x = range(N)
das erwartete Ergebnis ist
[[1,0],[2,1],[3,2],[4,3]]
Hier ist, was ich versucht habe:
>>> [ 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
Es produziert das gewünschte Ergebnis, aber ist es der beste Weg, um es zu erreichen?
Gibt es einige numpy, itertools Funktionen, die helfen können?
Also, ist die Eingabe eine Liste oder NumPy Array? Ist das erwartete Ergebnis eine Liste oder ein Array? Der Titel sagt 'array', während das Beispiel' range (N) 'ist, das eine Liste erstellt. – Divakar
Danke, ich erwarte, dass es diejenige ist, für die die bessere Lösung existiert. – tarashypka