Iterate über beliebige Dimensionen in numpy

8

Ich habe ein mehrdimensionales numpy-Array, und ich muss über eine gegebene Dimension hinweg iterieren. Problem ist, ich werde welche Dimension erst zur Laufzeit kennen. Mit anderen Worten, bei einem Array m könnte ich

wollen %Vor%

oder ich könnte

wollen %Vor%

usw.

Ich stelle mir vor, dass es ein einfaches Feature geben muss, um dies zu schreiben, aber ich kann nicht herausfinden, was es ist / wie es heißen könnte. Irgendwelche Gedanken?

    
chimeracoder 18.08.2010, 14:56
quelle

2 Antworten

6

Es gibt viele Möglichkeiten, dies zu tun. Du könntest den richtigen Index mit einer Liste von Slices erstellen oder vielleicht m s strides ändern. Am einfachsten ist es jedoch, np.swapaxes zu verwenden:

%Vor%

Lassen Sie axis die Achse sein, die Sie durchlaufen möchten. m_swapped ist identisch mit m , außer dass die Achse axis=1 mit der letzten Achse ( axis=-1 ) vertauscht ist.

%Vor%

Jetzt können Sie einfach die letzte Achse durchlaufen:

%Vor%

Beachten Sie, dass m_swapped eine Ansicht, keine Kopie von m ist. Wenn m_swapped geändert wird, ändert sich m .

%Vor%     
unutbu 18.08.2010, 15:52
quelle
3

Sie können slice(None) anstelle von : verwenden. Zum Beispiel

%Vor%     
tom10 19.08.2010 03:36
quelle

Tags und Links