Minimum von Numpy Array ignoriert Diagonale

7

Ich muss den maximalen Wert eines numpligen Arrays finden, das die diagonalen Elemente ignoriert.

np.amax () bietet Möglichkeiten, um bestimmte Achsen zu ignorieren. Wie erreiche ich das gleiche Ignorieren aller diagonalen Elemente?

    
Erdnase 01.04.2015, 15:07
quelle

3 Antworten

14

Sie könnten eine Maske verwenden

%Vor%

wobei a die Matrix ist, nach der Sie den max suchen möchten. Die Maske wählt die Elemente außerhalb der Diagonalen aus, so dass a[mask] ein langer Vektor aller Elemente außerhalb der Diagonalen ist. Dann nimmst du einfach die max.

Oder, wenn es Ihnen nichts ausmacht, das ursprüngliche Array zu ändern

%Vor%

Natürlich können Sie immer eine Kopie erstellen und dann das obige tun, ohne das Original zu ändern. Dies setzt auch voraus, dass a ein Gleitkommaformat ist.

    
hunse 01.04.2015, 15:26
quelle
6

Eine andere Möglichkeit besteht darin, NumPy's as_strided zu verwenden, um die Diagonale in die erste Spalte zu schieben und sie dann abzustreifen:

%Vor%

Wo das Argument für np.max die verschobene Sicht auf b ist:

%Vor%

so dass:

%Vor%     
xnx 01.04.2015 16:05
quelle
1

Dies sollte funktionieren

%Vor%     
plonser 01.04.2015 15:25
quelle

Tags und Links