Gradient de calcul avec python

Je voudrais savoir comment numpy.gradient travail.
J'ai utilisé un dégradé à essayer de calculer vitesse de groupe (vitesse de groupe d'un paquet d'ondes est la dérivée de fréquences relativement à wavenumbers, pas un groupe de vitesses). Je nourris un 3 colonne de tableau, les 2 premières colonnes sont x et y, coords, la troisième colonne est la fréquence de ce point (x,y). J'ai besoin de calculer le gradient et je l'ai fait attendre un 2d vectoriel, être dégradé définition

df/dx*i+df/dy*j+df/dz*k 

et ma fonction seulement une fonction de x et y, je l'ai fait attendre à quelque chose comme

df/dx*i+df/dy*j 

Mais j'ai eu 2 tableaux avec 3 colonnes chacune, 2 3d vecteurs; au début, je pensais que la somme des deux pourrait me donner le vecteur i ont été searchin pour mais la composante z ne veut pas disparaître. J'espère que j'ai été suffisamment clair dans mon explication. Je voudrais savoir comment numpy.gradient fonctionne et si c'est le bon choix pour mon problème. Sinon, je voudrais savoir si il y a d'autre fonction python que je peux utiliser.

Ce que je veux dire, c'est: je veux calculer le gradient d'un tableau de valeurs:

data=[[x1,x2,x3]...[x1,x2,x3]]

où x1,x2 sont les coordonnées des points sur une grille uniforme (mes points sur la zone de brillouin) et x3 est la valeur de la fréquence de ce point. Je donne également des mesures pour la dérivation pour les 2 directions:

stepx=abs(max(unique(data[:,0])-min(unique(data[:,0]))/(len(unique(data[:,0]))-1)

la même pour y la direction.
Je n'ai pas construit de mes données sur une grille, j'ai déjà une grille et c'est pourquoi la nature les exemples donnés ici dans les réponses ne m'aide pas.
Plus exemple d'adaptation doit avoir une grille de points et des valeurs comme celui que j'ai:

data=[]
for i in range(10):
  for j in range(10):
    data.append([i,j,i**2+j**2])

data=array(data,dtype=float)

gx,gy=gradient(data)

une autre chose que je peux ajouter, c'est que ma grille n'est pas un carré, mais a la forme d'un polygone en cours de la zone de brillouin d'un cristal 2d.

J'ai bien compris que numpy.gradient ne fonctionne correctement que sur un carré de la grille de valeurs, pas ce que je suis searchin pour. Même si je fais mes données sous forme d'une grille qui auraient beaucoup de zéros à l'extérieur du polygone de mes données d'origine, qui permettrait d'ajouter à très haute vecteurs de mon dégradé affectant (négativement) la précision du calcul. Ce module me semble plus un jouet qu'un outil, il a de sérieuses limites à mon humble avis.

Problème résolu à l'aide de dictionnaires.

  • Soooo quelle est la question? Ce module, vous devez utiliser? Est quelque chose qui va pas?
  • La Question est que dois-gradient de faire? Pourquoi me donne 2 3d vecteurs au lieu de 1 vectoriels en 2d? Ne gradient de calculer vraiment un dégradé? Par sa sortie je ne peux pas dire. Ne regarde pas exact pour moi.
  • Je pensais que c'était clair, 3ème volet de mon entrée est le champ scalaire, chaque valeur de la 3e composante est la valeur de ma fonction pour chaque (x,y) point.
  • le problème, c'est que vous donnez à gradient de la saisie erronée. Il ne s'occupe pas x1,x2 ou dans le dernier exemple i,j. Il veut juste une matrice de i**2+j**2 valeurs. Il est implicite que votre matrice de i**2+j**2 valeurs correspondent à la xy avion, et l'option scalaire arguments de gradient compte pour l'étape de la taille des hypothèses, c'est à dire si votre x points ne sont pas 1 loin de l'autre, et de même pour votre y points. Je vais en ville aujourd'hui, mais je vais mettre à jour ma réponse quand je serai de retour ce soir.