Ich habe einen 3-D numpy
array (nennen wir es a
) mit Form (74, 74, 4563)
, und ich mag einen längs- n
sub- extrahieren Array von jedem Ort in den ersten beiden Dimensionen. Jedes dieser Teilarrays beginnt jedoch an einer anderen Stelle, abhängig von den Indizes in den ersten zwei Dimensionen, i
& j
.reiner numpy Ausdruck für dieselbe Länge Subarrays mit unterschiedlichen Startindizes der Auswahl von 3-D-Array
Zum Beispiel, wenn n=1000
kann ich a[0, 0, 0:1000]
, aber auch a[0, 1, 2:1002]
, etc will ... Ich habe eine 2-D-Array (genannt ix0
), die ein 2-D-Array ist, das mir sagt, wo jeden beginnt Sub-Array für jede i
/j
Position. Schließlich bin ich garantiert, dass es keinen "Überlauf" geben wird - das heißt, alle Werte in ix0 + n
sind kleiner als die Dimension-2-Länge von a
(so müssen wir uns keine Sorgen darüber machen, nach einem Index jenseits der Bereich, der vorhanden ist).
Zum Beispiel ...
a = np.arange(74*74*4563).reshape(74, 74, 4563)
ix0 = np.arange(74*74).reshape(74,74)/2 + 50
a[:, :, ix0:ix0+n]
, die eine Möglichkeit, dies zu tun, ist es
IndexError: failed to coerce slice entry of type numpy.ndarray to integer
produzieren die alle ohne Schleife durch i
/j
Indexkombinationen oder eine große Maskenanordnung zu schaffen?
Also, für die Indexierung, was haben Sie als Eingabe? Ich nehme die Indizes für die ersten beiden Dimensionen an und beginne, stoppe für die dritte Dimension? Können Sie einen Beispiel-Eingabefall hinzufügen? – Divakar
Wie sieht ix0 aus? Wenn Sie zwei Positionen "i" und "j" UND die Startposition des Sub-Arrays identifizieren möchten, benötigen Sie ebenfalls ein 3D-Array, sofern Sie nicht etwas mit Indizes machen. – StefanS
aktualisiert, um einen expliziteren Beispielversuch zu liefern – DathosPachy