Utilisation du maillage de Numpy

Utilisation du maillage de Numpy
Ce message montrera ce qu'est un maillage et comment il peut être créé et utilisé dans Python.

Un maillage est une grille rectangulaire de valeurs faites de vecteurs de coordonnées. C'est aussi que les valeurs dans le maillot sont fonction des vecteurs de coordonnées.
Disons que vous voulez créer un maillot à partir des vecteurs de coordonnées x et y. La façon naïve de le faire est de créer une nouvelle grille rectangulaire et d'attribuer les valeurs de la grille en évaluant la fonction à chaque point du maillot. Le code suivant a illustré la manière naïve:

Meshgrid Naïve Way:

x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 2, 3, 4, 5]
z = [[0 pour j dans la plage (len (y))] pour i dans la plage (x)]
pour I à portée (Len (x)):
pour j à portée (len (y)):
z [i, j] = func (x [i], y [i])

Les inconvénients de cette approche sont qu'il est fastidieux et que la gestion de grands vecteurs de coordonnées prend plus de temps. La bibliothèque Python Numpy pour l'informatique scientifique aide à créer plus efficacement un maillot. Pour créer un maillot, nous utiliserons la fonction nombant.maille. Voici la même solution en utilisant Numpy.

$ python3
Python 3.8.5 (par défaut, 8 mars 2021, 13:02:45)
[GCC 9.3.0] sur Linux2
Tapez "Help", "Copyright", "Crédits" ou "Licence" pour plus d'informations.
>>> Importer Numpy comme NP
>>> x = np.lispace (0, 6, 3)
>>> x
Array ([0., 3., 6.])
>>> y = np.lispace (1, 7, 3)
>>> y
tableau ([1., 4., 7.])
>>> xx, yy = np.Meshgrid (x, y)
>>> xx
Array ([[0., 3., 6.]],
[0., 3., 6.]],
[0., 3., 6.]])
>>> xx.forme
(3, 3)

Les opérations vectorisées de Numpy le rendent plus rapide que les boucles Python. Les vectalisations aident à déléguer l'opération de boucle vers un code C hautement optimisé en interne et à le rendre plus rapide. Il exprime également des opérations sur l'ensemble des tableaux plutôt que sur les éléments individuels des tableaux.

L'évaluation d'une fonction sur le maillage est très facile. Tout ce que nous devons faire est simplement d'appeler la fonction. Nous allons également tracer la fonction évaluée ici en créant un tracé de contour en utilisant matplotlib. Continuer à partir de l'exemple précédent,

>>> z = np.sin (xx ** 2 + yy ** 2)
>>> Importer Matplotlib.pypllot comme plt
>>> plt.Figure (FigSize = (10, 6))
>>> plt.Contourf (xx, yy, z)
>>> plt.barre de couleur()
>>> plt.montrer()

Si le tableau X et Y sont trop grands, alors le tableau XX et YY pourraient prendre beaucoup de place. Cela peut être optimisé en utilisant l'option clairsemée = true.

>>> x = np.lispace (0, 5, 6)
>>> y = np.lispace (0, 5, 6)
>>> xx, yy = np.MeshGrid (X, Y, SPARSE = FALSE) #DEFAULT
>>> xx
Array ([[0., 1., 2., 3., 4., 5.]],
[0., 1., 2., 3., 4., 5.]],
[0., 1., 2., 3., 4., 5.]],
[0., 1., 2., 3., 4., 5.]],
[0., 1., 2., 3., 4., 5.]],
[0., 1., 2., 3., 4., 5.]])
>>> xx.forme
(6, 6)
>>> xx, yy = np.MeshGrid (X, Y, SPARSE = True) #Default
>>> xx
Array ([[0., 1., 2., 3., 4., 5.]])
>>> xx.forme
(1, 6)