Scipy - 3d Griddata - Warum ist es notwendig, Griddata xi Argument zu tupeln?

9

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?

    
Eric Schmidt 11.04.2014, 17:18
quelle

2 Antworten

3

Grundlegend ist, dass griddata sowohl points als auch xi durch eine points = _ndim_coords_from_arrays(points) Funktion übergibt, deren Dokumentation lautet:

%Vor%

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

%Vor%

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.

    
hpaulj 07.11.2014, 17:26
quelle
1

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.

    
John Cummings 06.11.2014 21:15
quelle

Tags und Links