Cet article explique comment convertir un tableau unidimensionnel en tableau bidimensionnel en Python, ร la fois pour les tableaux NumPy ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ et pour les listes intรฉgrรฉes ๐ฅโ๐ขโ๐ฌโ๐ญโ .
- Convertir un ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ unidimensionnel en ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ bidimensionnel
- Convertir un ๐ฅโ๐ขโ๐ฌโ๐ญโ unidimensionnel en ๐ฅโ๐ขโ๐ฌโ๐ญโ bidimensionnel
Consultez l’article suivant pour savoir comment convertir (= aplatir) un tableau multidimensionnel en un tableau unidimensionnel.
Convertir un ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ unidimensionnel en ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ bidimensionnel
Utilisez la mรฉthode ๐ซโ๐โ๐ฌโ๐กโ๐โ๐ฉโ๐โ() pour transformer la forme d’un tableau NumPy ๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ . Toute transformation de forme est possible. Cela inclut, sans s’y limiter, la transformation d’un tableau unidimensionnel en un tableau bidimensionnel.
En utilisant -1 , la taille de la dimension est automatiquement calculรฉe.
import numpy as np a = np.arange(6) print(a) # [0 1 2 3 4 5] print(a.reshape(2, 3)) # [[0 1 2] # [3 4 5]] print(a.reshape(-1, 3)) # [[0 1 2] # [3 4 5]] print(a.reshape(2, -1)) # [[0 1 2] # [3 4 5]]
Si vous spรฉcifiez une forme qui ne correspond pas au nombre total d’รฉlรฉments dans le tableau d’origine, une erreur sera gรฉnรฉrรฉe.
# print(a.reshape(3, 4)) # ValueError: cannot reshape array of size 6 into shape (3,4) # print(a.reshape(-1, 4)) # ValueError: cannot reshape array of size 6 into shape (4)
Convertir un ๐ฅโ๐ขโ๐ฌโ๐ญโ unidimensionnel en ๐ฅโ๐ขโ๐ฌโ๐ญโ bidimensionnel
Avec NumPy
Avec NumPy, vous pouvez convertir ๐ฅโ๐ขโ๐ฌโ๐ญโ en ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ , transformer la forme avec ๐ซโ๐โ๐ฌโ๐กโ๐โ๐ฉโ๐โ() , puis la reconvertir en ๐ฅโ๐ขโ๐ฌโ๐ญโ .
l = [0, 1, 2, 3, 4, 5] print(np.array(l).reshape(-1, 3).tolist()) # [[0, 1, 2], [3, 4, 5]] print(np.array(l).reshape(3, -1).tolist()) # [[0, 1], [2, 3], [4, 5]]
Consultez l’article suivant pour savoir comment convertir ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ et ๐ฅโ๐ขโ๐ฌโ๐ญโ l’un en l’autre.
Sans NumPy
Si NumPy n’est pas disponible, vous pouvez toujours rรฉaliser la transformation en utilisant des comprรฉhensions de liste, ๐ซโ๐โ๐งโ๐ โ๐โ() et des tranches.
- Comprรฉhensions de listes en Python
- Comment utiliser range() en Python
- Comment dรฉcouper une liste, une chaรฎne, un tuple en Python
def convert_1d_to_2d(l, cols): return [l[i:i + cols] for i in range(0, len(l), cols)] l = [0, 1, 2, 3, 4, 5] print(convert_1d_to_2d(l, 2)) # [[0, 1], [2, 3], [4, 5]] print(convert_1d_to_2d(l, 3)) # [[0, 1, 2], [3, 4, 5]] print(convert_1d_to_2d(l, 4)) # [[0, 1, 2, 3], [4, 5]]
Dans la fonction ci-dessus, le premier argument est la liste d’origine et le deuxiรจme argument est le nombre d’รฉlรฉments dans la liste interne (c’est-ร -dire le nombre de colonnes). S’il ya un reste, une liste avec un nombre diffรฉrent d’รฉlรฉments sera stockรฉe, comme dans le dernier exemple.
Si vous souhaitez prรฉciser le nombre de lignes :
def convert_1d_to_2d_rows(l, rows): return convert_1d_to_2d(l, len(l) // rows) print(convert_1d_to_2d_rows(l, 2)) # [[0, 1, 2], [3, 4, 5]] print(convert_1d_to_2d_rows(l, 3)) # [[0, 1], [2, 3], [4, 5]] print(convert_1d_to_2d_rows(l, 4)) # [[0], [1], [2], [3], [4], [5]]
La fonction ci-dessus est un exemple de base. Si le nombre total d’รฉlรฉments n’est pas divisible par le nombre de lignes que vous spรฉcifiez, le nombre rรฉel de lignes dans le rรฉsultat peut diffรฉrer de celui que vous avez spรฉcifiรฉ, comme indiquรฉ dans le dernier exemple.
