Numpy Sub-Array-Zuweisung mit erweiterter, gemischter Indizierung

Ursprüngliche Frage

Ich erhalte eine sehr merkwürdige Fehlermeldung, wenn ich versuche, einige Elemente eines Arrays zuzuweisen. Ich benutze eine Kombination aus einem Slice und einer Reihe von Indizes. Siehe folgendes einfaches Beispiel.

 import scipy as sp

 a = sp.zeros((3, 4, 5))
 b = sp.ones((4, 5))

 I = sp.array([0, 1, 3])

 b[:, I] = a[0, :, I]

Dieser Code löst das folgende @ aValueError:

ValueError: Nicht übereinstimmende Form: Wertearray von Form (3,4) konnte nicht an das Indizierungsergebnis von Form (3,4) gesendet werden.

-

Nachverfolge

Seien Sie vorsichtig, wenn Sie eine Kombination aus Slice und Seq. von ganzen Zahlen. Wie auf Github hingewiesen:

x = rand(3, 5, 7)

print(x[0, :, [0,1]].shape)
# (2, 5)

print(x[0][:, [0,1]].shape)
# (5, 2)

So soll Numpy funktionieren, aber es ist dennoch verwirrend, dass x [0] [:, I] nicht mit x [0,:, I] identisch ist. Da dies das gewünschte Verhalten ist, verwende ich x [0] [:, I] in meinem Code.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage