numpy Array Integer-Indizierung in mehr als einer Dimension

Ich bin mir ziemlich sicher, dass ich etwas mit Integer-Indexierung vermisse und Hilfe gebrauchen könnte. Angenommen, ich erstelle ein 2D-Array:

>>> import numpy as np
>>> x=np.array(range(24)).reshape((4,6))
>>> x
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])

Ich kann dann Zeile 1 und 2 auswählen mit:

>>> x[[1,2],:]
array([[ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

Oder die Spalte 1 der Zeilen 2 und 3 mit:

>>> x[[1,2],1]
array([ 7, 13])

Es ist also für mich sinnvoll, die Spalten 3, 4 und 5 der Zeilen 1 und 2 folgendermaßen auszuwählen:

>>> x[[1,2],[3,4,5]]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape

Und stattdessen muss ich es in zwei Schritten tun:

>>> a=x[[1,2],:]
>>> a
array([[ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])
>>> a[:,[3,4,5]]
array([[ 9, 10, 11],
       [15, 16, 17]])

Von R kommend scheinen meine Erwartungen falsch zu sein. Können Sie bestätigen, dass dies in einem Schritt tatsächlich nicht möglich ist, oder eine bessere Alternative vorschlagen? Vielen Dank!

BEARBEITEN: Bitte beachten Sie, dass meine Auswahl an Zeilen und Spalten im Beispiel zufällig aufeinanderfolgend ist, dies aber nicht sein muss. Mit anderen Worten, die Slice-Indizierung reicht für meinen Fall nicht aus.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage