Python >> Tutoriel Python >  >> Python

np.forme()

Ce tutoriel explique le shape() de NumPy fonction.

numpy.shape(a)

Renvoie la forme d'un tableau ou array_like objet a .

Argument Type de données Description
a array_like Tableau NumPy ou liste Python dont la forme doit être renvoyée. S'il s'agit d'un tableau NumPy, il renvoie l'attribut a.shape . S'il s'agit d'une liste Python, elle renvoie un tuple de valeurs entières définissant le nombre d'éléments dans chaque dimension si vous auriez créé un tableau NumPy à partir de celle-ci.

Valeur de retour :shape - un tuple d'entiers qui sont définis sur les longueurs des dimensions de tableau correspondantes.

Exemples

L'exemple simple est lorsqu'il est appliqué à un tableau NumPy :

>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> np.shape(a)
(2, 2)

Vous importez la bibliothèque NumPy et créez un tableau à deux dimensions à partir d'une liste de listes. Si vous passez le tableau NumPy dans la fonction de forme, il renvoie un tuple avec deux valeurs (=dimensions). Chaque dimension stocke le nombre d'éléments dans cette dimension (=axe). Comme il s'agit d'une matrice quadratique 2x2, le résultat est (2,2).

La forme suivante est un autre exemple de tableau multidimensionnel :

>>> b = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> b
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
>>> b.shape
(2, 4)
>>> np.shape(b)
(2, 4)

La forme est maintenant (2, 4) avec deux lignes et quatre colonnes.

np.shape() contre array.shape

Notez que le résultat de np.shape(b) et b.shape est le même si b est un tableau NumPy. Si b n'est pas un tableau NumPy mais une liste, vous ne pouvez pas utiliser b.shape car les listes n'ont pas l'attribut shape. Examinons cet exemple :

>>> b = [[1, 2, 3, 4], [5, 6, 7, 8]]
>>> np.shape(b)
(2, 4)

Le np.shape() La fonction renvoie le même tuple de forme, même si vous transmettez une liste imbriquée dans la fonction au lieu d'un tableau NumPy.

Mais si vous essayez d'accéder à l'attribut list.shape, NumPy renvoie l'erreur suivante :

>>> b.shape
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    b.shape
AttributeError: 'list' object has no attribute 'shape'

Ainsi, la différence entre np.shape() et array.shape est que le premier peut être utilisé pour toutes sortes de array_like objets tandis que ce dernier ne peut être utilisé que pour les tableaux NumPy avec le shape attribut.

Récapituler la forme NumPy

L'attribut shape renvoie toujours un tuple qui nous indique la longueur de chaque dimension. Le tableau unidimensionnel est un vecteur ligne et sa forme est une valeur unique itérable suivie d'une virgule. Les tableaux unidimensionnels n'ont pas de lignes ni de colonnes, donc l'attribut shape renvoie un tuple à valeur unique.

Prenons un exemple :

import numpy as np

#an one-dimensional NumPy array
arr = np.arange(10)

#print an array
print(arr)
# [0 1 2 3 4 5 6 7 8 9]

print(arr.shape)
# (10, )

L'extrait de code utilise également le NumPy arrange fonction pour créer un tableau initial de valeurs suivantes entre 0 et 9. Veuillez trouver une discussion détaillée de la NumPy organiser fonction dans cet article de blog Finxter :https://blog.finxter.com/numpy-arange/.

L'attribut shape d'un tableau à deux dimensions (également appelé matrice) nous donne un tuple. La forme renvoie le nombre d'éléments le long de chaque dimension, qui est le nombre de lignes et de colonnes dans le tableau à deux dimensions.

# A two-dimensional NumPy array
import numpy as np

arr = np.array([[1,2,3,4,5], [5,4,3,2,1]])
print(arr.shape)
# (2, 5)

L'exemple suivant concerne la forme de tableaux tridimensionnels.

# A three-dimensional array
import numpy as np

arr = np.array([ [ [0, 11, 15, 16], [3, 7, 10, 34], [44, 99, 5, 67] ],[ [52, 8, 11, 13], [0, 4, 5, 6], [4, 4, 4, 4] ] ])
print(arr.shape)
# (2, 3, 4)

Il faut un peu de pratique pour comprendre le tuple de forme pour les tableaux multidimensionnels. Les dimensions représentées par un tuple sont lues de l'extérieur vers l'intérieur. Si vous observez les crochets, le crochet le plus à l'extérieur fait partie de la syntaxe de base pour l'ensemble du tableau. Dans la forme tuple 2 représente le deuxième ensemble de crochets. Si vous les comptez, vous verrez qu'il y a 2 éléments dans cette dimension.

1er élément [ [0, 11, 15, 16], [3, 7, 10, 34], [44, 99, 5, 67] ]

2ème élément [ [52, 8, 11, 13], [0, 4, 5, 6], [4, 4, 4, 4] ]

Chaque élément contient 3 autres éléments dans la deuxième dimension. Si vous pensez aux listes imbriquées, vous pouvez faire l'analogie. Ces éléments sont :

1er élément [0, 11, 15, 16]

2ème élément [3, 7, 10, 34]

3ème élément [44, 99, 5, 67]

Enfin, le nombre 4 représente le nombre d'éléments dans la troisième dimension. Ce sont les éléments les plus intimes. Par exemple 0, 11, 15 et 16.


Voulez-vous devenir un maître NumPy ? Découvrez notre livre de puzzle interactif Coffee Break NumPy et boostez vos compétences en data science ! (Le lien Amazon s'ouvre dans un nouvel onglet.)

Références

  • Mise en œuvre :https://github.com/numpy/numpy/blob/master/numpy/core/fromnumeric.py#L1926-L1969