Numpy - schneidet den 2. Zeilen- oder Spaltenvektor aus dem Array

7

Ich versuche einen netten kleinen Trick zu finden, um eine Zeile / Spalte aus einem 2D-Array zu schneiden und ein Array von (col_size x 1) oder (1 x row_size) zu erhalten.

Gibt es einen einfacheren Weg als numpy.reshape() nach jedem Slicen zu benutzen?

Prost, Stephan

    
neurotronix 24.09.2015, 14:39
quelle

3 Antworten

12

Sie können eine neue Achse in einer einzigen Operation in Scheiben schneiden und einfügen. Zum Beispiel, hier ist ein 2D-Array:

%Vor%

Um eine einzelne -Spalte auszuschneiden (Rückgabe des Arrays der Form (2, 1) ), schneiden Sie mit None als dritte Dimension ab:

%Vor%

Um eine einzelne Zeile auszuschneiden (Array der Form (1, 3) wird zurückgegeben), schneiden Sie mit None als zweite Dimension ab:

%Vor%     
Alex Riley 24.09.2015, 14:44
quelle
6

Machen Sie den Index zu einem Slice, einer Liste oder einem Array

%Vor%

Aber es ist nichts falsch mit reshape anders als die Tatsache, dass es Tippen erfordert. Es ist nicht langsam. [None,:] ist eine nette kurze Hand dafür.

Die Verwendung eines Listenindex ist zwar der kürzeste, aber er erzeugt eine Kopie (ein Plus oder Minus?) und ist langsamer

Für (100,100) Ganzzahl-Array:

%Vor%

Ein Test für die Kopie besteht darin, den Datenpufferzeiger mit dem Original zu vergleichen.

%Vor%     
hpaulj 24.09.2015 14:58
quelle
1

Wie wäre es mit diesem schönen und einfachen Weg?

%Vor%     
kmario23 05.12.2017 01:45
quelle

Tags und Links