Numpy Sub-Array-Zuweisung mit erweiterter, gemischter Indizierung
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.
-
NachverfolgeSeien 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.