0
votes

Interpolant dans une grille en python

J'ai un certain nombre de valeurs de hauteur sur une grille, spécifiée dans une série de listes: xxx pré>

L'exemple ci-dessus indique une grille de 40 m x 20m sous la forme P>

[x=0y=0, x=0y=10...][x=10y=0, x=10y=10...] etc.


2 commentaires

Est-ce ce dont vous avez besoin? docs.cipy.org/doc/ Scipey-0.14.0 / Référence / Généré / ...


Vous voudrez peut-être vérifier Cet article


3 Réponses :


0
votes

solution: transformer en array 2d xxx

Vous pouvez accéder à la grille via X, coordonnées y

grille [1,1] et etc

basé sur cela, vous pouvez créer une logique.

si x = 5, y = 5, vous pouvez créer des index de coins carrés par ceci:

index: x / 5 +0, x / 5 + 1, y / 5 , y / 5 + 1 ----> en les combinant, vous obtenez [0,0], [0,1], [1,0], [1,1]

à la fin que vous venez de grille d'alimentation avec ces index xxx


2 commentaires

La construction de votre grille est complexe inutile. Il pourrait être grille = np.vstack ([a, b, c]) Votre code construit réellement et alloue la mémoire pour 3 grilles, en supprimant les deux premiers.


Merci. J'ai essayé Vstack et ça vient de prolonger le tableau, mais avec votre code, il le fait mieux



1
votes

Vous pouvez utiliser scipy.interpoler.interp2d code> . Le code ci-dessous devrait faire le travail:

import numpy as np
from scipy.interpolate import interp2d

# Original data (e.g. measurements)
a = [3, 1, -2, -3, -3]
b = [2, -7, -14, -30, -39]
c = [46, 22, 5, -2, -8]

x = [0, 10, 20]             # x-coordinates
y = [0, 10, 20, 30, 40]     # y-coordinates

# Organise data in matrix
z = np.vstack([a, b, c]).T

# Create interpolation function
f_z = interp2d(x, y, z)

# Desired x/y values
x_interp = 5
y_interp = 5

# Collect interpolated z-value
z_interp = f_z(x_interp, y_interp)
print(z_interp)  # (result: [-0.25])


0 commentaires

0
votes

Vous pouvez y parvenir avec Interpoler .GriddData fonction de Scipey .

Avec le code ci-dessous, vous pouvez obtenir la toute interpolation que vous souhaitez à partir de votre grille. xxx

L'exemple ci-dessus vous donne l'interpolation à OUPUTPOINT (5,5) . Et la sortie donnerait: xxx


2 commentaires

Vous voudrez peut-être vérifier Cet article


Le poste que vous avez lié s'applique à la plupart des réponses données ici. Peut-être que vous pourriez l'ajouter comme un commentaire à la question initiale, de sorte qu'il est plus susceptible de se faire remarquer par d'autres lecteurs?