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.