Skip to content

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 ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ .

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.

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.