Warum schlägt der folgende Aufruf von Griddaten fehl?
%Vor%Die folgende Ausnahme tritt auf: ValueError: Anzahl der Dimensionen in xi passt nicht zu x
Wenn ich das Argument xi (grid_vals) in Tupel umwandeln:
%Vor%Der Fehler verschwindet. Warum?
Grundlegend ist, dass griddata
sowohl points
als auch xi
durch eine points = _ndim_coords_from_arrays(points)
Funktion übergibt, deren Dokumentation lautet:
und Tastenaktion für Tupel ist:
%Vor%alles andere, einschließlich einer Liste, wird nur in ein Array konvertiert:
%Vor%Die tatsächliche Interpolation erwartet Arrays mit der Dimension '3d' als letzte.
So wird Ihre Liste von 3 (200,200,200)
Arrays zu einem Array von (3,200,200,200)
shape. Aber Ihr points
-Array ist (50,3)
. Die Nachricht number of dimensions in xi does not match x
ergibt sich aus 200
stimmt nicht mit 3
überein.
Die griddata
-Dokumentation ist eindeutig für points
, weniger für xi
. Aber sein Beispiel verwendet (x, Y)
mit Arrays von mgrid
.
Das würde also funktionieren:
%Vor% Eine andere Möglichkeit, das erforderliche Array aus Ihrer meshgrid
-Liste zu generieren, besteht darin, es zu einem Array zu machen und die erste Dimension zu rollen
Eine weitere Möglichkeit, ein Netz zu generieren, ist np.ix_
, das ein offenes Netz in Form eines Tupels zurückgibt. Ein offenes Netz wie dieses benötigt die Übertragung.
Ein einzelner Punkt wird entweder mit:
interpoliert %Vor% Siehe die Reaktion auf Johns 4123
Pull-Anfrage hat mehr Diskussionen über die Whys.
Es schlägt fehl, weil das zugrundeliegende scipy interpolate-Modul über Code verfügt, der mehrdimensionale Tupel und nicht multidimensionale Listen korrekt behandelt:
Ich habe Ausgabe 4123 und Ziehen Sie die Anforderung 4124 , um das Problem zumindest für Listen zu beheben.