Comment initier un tableau 2-D en Python

Jinku Hu 30 janvier 2023
  1. méthode de compréhension de liste pour initier un tableau 2D
  2. Méthode imbriquée range pour initier un tableau 2D
  3. Méthode NumPy pour initier un tableau 2D
Comment initier un tableau 2-D en Python

Ce guide tutoriel présente différentes méthodes pour initier un tableau 2D en Python. Nous allons faire un tableau 2D 3x5 dans les exemples suivants.

méthode de compréhension de liste pour initier un tableau 2D

>>> column, row = 3, 5
>>> array2D = [[0 for _ in range(row)] for _ in range(column)]
>>> array2D
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

Cette méthode de compréhension de liste imbriquée crée un tableau 2-D avec la valeur initiale 0. Bien sûr, vous pouvez changer la valeur initiale pour n’importe quelle valeur que vous devez assigner dans votre application.

Méthode imbriquée range pour initier un tableau 2D

Si vous ne vous souciez pas de la valeur initiale dans le tableau 2-D, la valeur 0 pourrait même être éliminée.

En Python 2.x

>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

En Python 3.x

>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[range(0, 5), range(0, 5), range(0, 5)]

Nous ne pouvions pas simplement utiliser range(x) pour initier un tableau 2-D en Python 3.x parce que range retourne un objet contenant une séquence d’entiers en Python 3.x, mais pas une liste d’entiers comme en Python 2.x.

range en Python 3.x est plus similaire à xrange en Python 2.x. L’objet range en Python 3.x est immuable, par conséquent, vous n’assignez pas d’éléments à ses éléments.

Si vous avez besoin de l’assignation d’éléments, vous devez convertir l’objet range en objet list.

>>> A = [list(range(row)) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

Méthode [0] * N pour initier un tableau 2D

Une façon pythonique d’initier un tableau 2D pourrait être

>>> column, row = 3, 5
>>> A = [[0]*row for _ in range(column)]
>>> A
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

Bien que nous devions être prudents lorsque nous utilisons la multiplication de liste parce qu’elle crée simplement une séquence avec plusieurs fois des références à un même objet, nous sommes soulagés d’utiliser [0]*n ici parce que l’objet de données 0 est immuable de sorte que nous ne rencontrerons jamais de problèmes même avec des références au même objet immuable.

Méthode NumPy pour initier un tableau 2D

En plus du tableau Python natif, NumPy devrait être la meilleure option pour créer un tableau 2-D, ou pour être plus précis, une matrice.

Vous pourriez créer une matrice remplie de zéros avec numpy.zeros.

>>> import numpy as np
>>> column, row = 3, 5
>>> np.zeros(column, row)
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

Ou initier une matrice remplie de ones avec numpy.ones.

>>> import numpy as np
>>> column, row = 3, 5
>>> np.ones((column, row))
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])

Vous pouvez même créer un nouveau tableau sans initialiser les entrées avec numpy.empty.

>>> import numpy as np
>>> column, row = 3, 5
>>> np.empty((5,5))
array([[6.23042070e-307, 4.67296746e-307, 1.69121096e-306,
        1.33511562e-306, 1.89146896e-307],
       [7.56571288e-307, 3.11525958e-307, 1.24610723e-306,
        1.37962320e-306, 1.29060871e-306],
       [2.22518251e-306, 1.33511969e-306, 1.78022342e-306,
        1.05700345e-307, 1.11261027e-306],
       [1.11261502e-306, 1.42410839e-306, 7.56597770e-307,
        6.23059726e-307, 1.42419530e-306],
       [7.56599128e-307, 1.78022206e-306, 8.34451503e-308,
        2.22507386e-306, 7.20705877e+159]])
Notes
C’est une meilleure solution si vous voulez d’abord créer le tableau vide et ensuite assigner les valeurs des éléments. Mais soyez conscient que des valeurs aléatoires sont présentes dans le tableau, ce qui peut être risqué si vous accédez au tableau en indexant avant que la valeur de l’index correspondant n’ait été assignée.
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - Python Array