Numpy multidimensionales Array-Slicing

8

Angenommen, ich habe ein 3x3x3-Nummernfeld mit

definiert %Vor%

Nun kann ich ein Array mit dem (0,1) -Element jedes 3x3-Unterarrays mit x[:, 0, 1] erhalten, das array([ 1, 10, 19]) zurückgibt. Was ist, wenn ich ein Tupel (m, n) habe und das (m, n) Element jedes in einem Tupel gespeicherten Unterarrays (0,1) abrufen möchte?

Angenommen, ich habe t = (0, 1) . Ich habe versucht, x[:, t] , aber es hat nicht das richtige Verhalten - es gibt die Zeilen 0 und 1 jedes Subarrays. Die einfachste Lösung, die ich gefunden habe, ist

%Vor%

Aber ich bin mir sicher, dass es einen besseren Weg geben muss. Natürlich könnte ich in diesem Fall x[:, t[0], t[1]] machen, aber das kann nicht für den Fall verallgemeinert werden, in dem ich nicht weiß, wie viele Dimensionen x und t haben.

    
James 06.09.2011, 22:31
quelle

2 Antworten

9

Sie können zuerst das Indextupel erstellen:

%Vor%     
HYRY 06.09.2011, 23:01
quelle
4

HYRY-Lösung ist korrekt, aber ich habe immer festgestellt, dass numpys r_ , c_ und s_ Index-Tricks etwas seltsam aussehen. Also hier ist das Äquivalent mit einem slice -Objekt:

%Vor%

Das einzige Argument zum Slice ist die Stopp-Position (d. h. None bedeutet alles auf die gleiche Weise wie x[:] entspricht x[None:None] )

    
wim 07.09.2011 02:14
quelle