Diffusion NumPy

Diffusion Numpy



Les tableaux de tailles différentes ne peuvent pas être ajoutés, soustraits ou autrement utilisés en arithmétique. Dupliquer le tableau de petits pour lui donner les mêmes dimensions et la même taille que le plus grand tableau est une approche. Lors de l'arithmétique de tableau, NumPy offre une fonctionnalité connue sous le nom de diffusion de tableau qui peut raccourcir et simplifier considérablement votre code. Vous découvrirez l'idée de la diffusion de tableaux et comment l'utiliser dans NumPy dans ce didacticiel. De plus, plusieurs exemples de programmes sont fournis.

Qu'est-ce que la diffusion NumPy ?

Lors de l'exécution d'opérations arithmétiques sur des tableaux de différentes formes, NumPy se réfère à cela comme diffusion. Ces opérations de tableau sont fréquemment effectuées sur les éléments respectifs. Si deux tableaux ont la même forme, cela peut être fait facilement. Même si ce concept est utile, la diffusion n'est pas toujours recommandée car elle peut entraîner une utilisation inefficace de la mémoire qui ralentit le calcul. Les opérations NumPy sont souvent effectuées sur des paires de tableaux décomposées élément par élément.

Règles de diffusion

Un ensemble particulier de directives doit être suivi lors de la diffusion. Ceux-ci sont décrits ci-dessous :







  1. Il est important que la forme du tableau de rang inférieur soit précédée de 1 jusqu'à ce que les deux formes des tableaux partagent la même longueur si deux tableaux n'ont pas le même rang.
  2. Deux tableaux sont considérés comme compatibles s'ils ont la même taille de dimension ou si l'un d'eux a la taille de dimension définie sur 1.
  3. Les tableaux ne peuvent être diffusés ensemble que si leurs tailles et dimensions correspondent.
  4. Une fois la diffusion terminée, chaque tableau agit comme si sa forme correspondait à celle du plus grand élément dans les formes des deux tableaux d'entrée.
  5. L'un des tableaux se comporte comme s'il était répliqué avec cette dimension si l'autre tableau a une dimension supérieure à 1 et le premier tableau a une dimension de 1.

Voyons maintenant quelques exemples de mise en œuvre du concept de diffusion.



Exemple 1:

Sur des paires de tableaux, les opérations NumPy sont généralement effectuées élément par élément. Les deux tableaux doivent, dans le scénario le plus simple, avoir la même forme, comme dans l'exemple ci-dessous :



importer numpy

one_arr = numpy. déployer ( [ 2.0 , 3.0 , 1.0 ] )

deux_arr = numpy. déployer ( [ 3.0 , 3.0 , 3.0 ] )

imprimer ( un_arr * deux_arr )





Comme vous pouvez le voir dans le code ci-dessus, nous avons deux tableaux : 'one_arr' et 'two_ arr'. Chacun d'entre eux a un ensemble de valeurs distinct. Les valeurs dans 'one_arr' sont [2.0,3.0,1.0] et 'two _arr' sont [3.0,3.0,3.0]. Vous pouvez alors voir que le résultat du calcul du produit de ces deux tableaux est le suivant :



Lorsque certaines exigences sont remplies par les formulaires des tableaux, la règle de diffusion de NumPy réduit cette restriction. Lorsqu'un tableau et une valeur scalaire sont joints dans une opération, la diffusion est démontrée dans sa forme la plus élémentaire. Comme vous pouvez le voir, 3 est contenu dans la variable nommée 'two_arr.'

importer numpy

one_arr = numpy. déployer ( [ 2.0 , 3.0 , 1.0 ] )

deux_arr = 3.0

imprimer ( un_arr * deux_arr )

Le code ci-dessus produit le résultat suivant.

Dans l'exemple précédent, où 'two_arr' était un tableau, le résultat est équivalent. Nous pouvons imaginer que le scalaire 'two_arr' est développé au cours du processus arithmétique dans un tableau ayant la même forme que 'one _arr'. Le tableau 'two_arr' contient de nouveaux éléments qui ne sont que des doublons du premier scalaire. La comparaison d'étirement est purement hypothétique. Pour rendre les opérations de diffusion aussi économes en mémoire et en calcul que possible, NumPy est suffisamment intelligent pour utiliser la valeur scalaire d'origine plutôt que de produire des copies.

Exemple 2 :

Voici un autre programme Python simple qui effectue la diffusion. Encore une fois, deux tableaux sont créés contenant des valeurs différentes. Il est nécessaire de remodeler 'first_arr' en un vecteur colonne de forme 3 × 1 pour calculer un produit extérieur. Suite à cela, la diffusion est effectuée contre 'second_arr' pour fournir un résultat de taille 3 × 2, connu sous le nom de produit extérieur de 'first_arr' et 'second_arr'. La diffusion à 2 × 3 est possible puisque 'result_arr' a la forme 2 ×3 ainsi que la forme (3,).

Après avoir suivi toutes les étapes mentionnées ci-dessus, un vecteur doit être inclus dans chaque colonne des matrices qui sont 'result_arr' et 'second_arr'. Celles-ci ont des dimensions de 2 × 3 et (2, ). La transposition de 'result_arr' donnera une forme de 3 × 2, qui peut ensuite être diffusée contre 'second_arr' pour obtenir la même forme. Typiquement, la transposition donne un produit final sous la forme 2×3.

importer numpy

first_arr = numpy. déployer ( [ 12 , 24 , 14 ] )

second_arr = numpy. déployer ( [ quinze , 22 ] )

imprimer ( numpy. remodeler ( first_arr , ( 3 , 1 ) ) * seconde_arr )

result_arr = numpy. déployer ( [ [ 12 , 22 , 31 ] , [ quinze , 22 , Quatre cinq ] ] )

imprimer ( résultat_arr + premier_arr )

imprimer ( ( result_arr. J + second_arr ) . J )

imprimer ( result_arr + numpy. remodeler ( second_arr , ( deux , 1 ) ) )

imprimer ( result_arr * deux )

Vous pouvez voir la sortie ci-dessous.

Exemple 3 :

Un tableau tridimensionnel peut être diffusé à l'aide du programme Python suivant. Dans cet exemple, deux tableaux nommés 'first_arr' et 'second_arr' ont été générés. Le tableau 'first_arr' contient [4,13,26,12] valeurs et 'second_arr' contient [32,67,45,17] valeurs. Les 2 dimensions du tableau initial font la différence. La somme du premier et du deuxième tableau sera affichée ci-dessous après l'exécution du code. Vous pouvez voir que nous avons trois instructions d'impression dans le code, chacune affichant le texte 'First array:', 'Second array' et 'Third array:' à tour de rôle. La somme de ces deux tableaux nouvellement générés est alors affichée.

importer numpy

first_arr = numpy. déployer ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Quatre cinq , 17 ] ] )

second_arr = numpy. déployer ( [ 24 , Quatre cinq , 66 , 87 ] )

imprimer ( ' \n Premier tableau : ' )

imprimer ( first_arr )

imprimer ( ' \n Deuxième tableau : ' )

imprimer ( second_arr )

imprimer ( ' \n Somme du premier et du deuxième tableau : ' )

sum_result = premier_arr + deuxième_arr ;

imprimer ( sum_result )

Voici la capture d'écran de sortie du code donné.

Exemple 4 :

Le dernier programme Python qui diffuse un tableau tridimensionnel est donné ici. Deux tableaux sont spécifiés dans ce programme, dont le premier a trois dimensions. La somme du premier et du deuxième tableau sera affichée comme indiqué ci-dessus après l'exécution du code. Bien que les valeurs de ces tableaux varient, le code restant est le même que celui utilisé dans l'exemple de programme ci-dessus.

importer numpy

first_arr = numpy. déployer ( [ [ 12 , Quatre cinq , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ cinquante , 40 , 18 , 26 ] ] )

second_arr = numpy. déployer ( [ 12 , 44 , 22 , 12 ] )

imprimer ( ' \n Premier tableau : ' )

imprimer ( first_arr )

imprimer ( ' \n Deuxième tableau : ' )

imprimer ( second_arr )

imprimer ( ' \n Somme du premier et du deuxième tableau : ' )

sum_result = premier_arr + deuxième_arr ;

imprimer ( sum_result )

Vous pouvez voir dans la figure ci-dessous qu'un tableau tridimensionnel du premier tableau est présenté, suivi d'un tableau bidimensionnel du deuxième tableau et du résultat de ces deux utilisant le principe de diffusion.

Conclusion

Cet article traite de la diffusion, un concept crucial de Python. Dans NumPy, le terme « diffusion » fait référence à la capacité de gérer des tableaux de différentes formes tout en effectuant des opérations arithmétiques fréquemment effectuées. Le sujet susmentionné a été entièrement traité avec une variété d'exemples. Cet article a utilisé les exemples de programmes mentionnés pour montrer comment diffuser sur des tableaux 1-D, 2-D et 3-D, respectivement. Vous pouvez essayer d'exécuter ces exemples sur votre système et afficher les résultats pour mieux comprendre comment tout fonctionne en général.