Wenn np.lib.stride_tricks.as_strided
verwenden, wie kann ich verwalten 2D ein Array mit dem verschachtelten Arrays als Datenwert? Gibt es einen bevorzugten effizienten Ansatz?Numpy Rollfenster über 2D-Array, als 1D-Array mit verschachtelten Array als Datenwert
Insbesondere, wenn ich ein 2D np.array
suchen wie folgt, wobei jedes Datenelement in einem 1D-Array ist ein Array mit einer Länge von 2:
[[1., 2.],[3., 4.],[5.,6.],[7.,8.],[9.,10.]...]
ich für überrollen neu zu gestalten wollen wie folgt:
[[[1., 2.],[3., 4.],[5.,6.]],
[[3., 4.],[5.,6.],[7.,8.]],
[[5.,6.],[7.,8.],[9.,10.]],
...
]
Ich habe mir ähnliche Antworten angesehen (zB this rolling window function), allerdings kann ich das interne Array/Tupel nicht verändern.
Zum Beispiel mit einer Fensterlänge von 3
: Ich habe ein shape
von (len(seq)+3-1, 3, 2)
versucht und ein stride
von (2 * 8, 2 * 8, 8)
, aber kein Glück. Vielleicht fehlt mir etwas Offensichtliches?
Prost.
EDIT: Es ist einfach, eine funktionsgleiche Lösung mit Python eingebaute Funktionen zu erzeugen, aber (die beispielsweise np.arange
ähnlich wie Divakar-Lösung unter Verwendung optimiert werden kann), was etwa as_strided
mit? Aus meiner Sicht könnte dies für eine hocheffiziente Lösung verwendet werden?
Hm, vielleicht habe ich etwas sehr offensichtliches verpasst ... Danke fürs Herumspielen, ich werde es so schnell wie möglich verifizieren! Leider war ich zu beschäftigt, um mich am letzten Tag mit dem dazugehörigen Projekt zu setzen. – Kappers
Danke, ich beantwortete tatsächlich meine eigene Frage und war zu dumm um es zu realisieren - seufz. Am Ende brachte dies keine Leistung auf den Tisch - ich muss noch einmal nachsehen, wenn ich eine komplexere/höhere Dimension Datenstruktur oder vielleicht nur größere Datenmengen verwende. – Kappers