Warum unterscheidet sich die Indizierung von numpy Arrays mit Klammern und Kommas im Verhalten?

8

Ich neige dazu, numpige Arrays (Matrizen) mit eckigen Klammern zu indizieren, aber ich habe bemerkt, dass ich, wenn ich ein Array (Matrix) zerschneiden möchte, die Komma-Notation verwenden muss. Warum ist das? Zum Beispiel

%Vor%     
BoltzmannBrain 30.06.2016, 04:27
quelle

2 Antworten

13

Dies:

%Vor%

bedeutet "nimm alle Indizes von x entlang der ersten Achse, aber nur Index 1 entlang der zweiten Achse".

Dies:

%Vor%

bedeutet "nimm alle Indizes von x entlang der ersten Achse (also alle von x ), dann nimm Index 1 entlang der ersten Achse des Ergebnisses". Sie wenden das 1 auf die falsche Achse an.

x[1][2] und x[1, 2] sind nur äquivalent, da die Indexierung eines Arrays mit einer Ganzzahl alle verbleibenden Achsen in Richtung der Vorderseite der Form verschiebt, sodass die erste Achse von x[1] die zweite Achse von x ist. Dies verallgemeinert sich überhaupt nicht; Sie sollten fast immer Kommas anstelle von mehreren Indexierungsschritten verwenden.

    
user2357112 30.06.2016, 04:34
quelle
1

Wenn Sie beim Verschieben der Multidimension des Arrays weniger Indizes als die Anzahl der Achsen angeben, werden die fehlenden Indizes als vollständige Segmente betrachtet. Wenn Sie also im Wesentlichen tun, wenn Sie x[:][1] aufrufen, ist x[:,:][1,:] Daher wird x[:,:] nur x selbst zurückgeben.

    
shaojl7 30.06.2016 04:45
quelle

Tags und Links