Skip to content

Cet article explique comment convertir entre un tableau NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) et une liste Python intรฉgrรฉe ( ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ ).

Bien que le terme ยซ convertir ยป soit utilisรฉ pour plus de simplicitรฉ, le processus implique en rรฉalitรฉ la crรฉation d’un nouvel objet d’un type diffรฉrent, tandis que l’objet d’origine reste inchangรฉ.

La version de NumPy utilisรฉe dans cet article est la suivante. Notez que les fonctionnalitรฉs peuvent varier selon les versions.

import numpy as np print(np.__version__) # 1.26.1 

Convertir une liste en tableau NumPy : ๐งโ€Œ๐ฉโ€Œ.๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ()

Vous pouvez convertir une liste en tableau NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) en passant une liste ร  ๐งโ€Œ๐ฉโ€Œ.๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ() .

l_1d = [0, 1, 2] a_1d = np.array(l_1d) print(a_1d) # [0 1 2] print(type(a_1d)) # <class 'numpy.ndarray'> print(a_1d.dtype) # int64 

Le type de donnรฉes ( ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ ) du ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ gรฉnรฉrรฉ est automatiquement dรฉterminรฉ ร  partir de la liste d’origine, mais il peut รฉgalement รชtre spรฉcifiรฉ ร  l’aide de l’argument ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ .

Pour plus d’informations sur le type de donnรฉes ( ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ ) dans NumPy, consultez l’article suivant.

a_1d_f = np.array(l_1d, dtype=float) print(a_1d_f) # [0. 1. 2.] print(a_1d_f.dtype) # float64 

Il en va de mรชme pour les tableaux multidimensionnels ร  deux dimensions ou plus.

l_2d = [[0, 1, 2], [3, 4, 5]] a_2d = np.array(l_2d) print(a_2d) # [[0 1 2] # [3 4 5]] 

ร‰tant donnรฉ que les tableaux multidimensionnels reprรฉsentรฉs dans les listes Python sont simplement des listes imbriquรฉes (listes de listes), le nombre d’รฉlรฉments dans chaque liste imbriquรฉe peut varier.

Cependant, les transmettre directement ร  ๐งโ€Œ๐ฉโ€Œ.๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ() gรฉnรจre un V๐šโ€Œ๐ฅโ€Œ๐ฎโ€Œ๐žโ€ŒE๐ซโ€Œ๐ซโ€Œ๐จโ€Œ๐ซโ€Œ dans NumPy version 1.24 et ultรฉrieures.

l_2d_jagged = [[0, 1, 2], [3, 4]] # a_2d_jagged = np.array(l_2d_jagged) # ValueError: setting an array element with a sequence. # The requested array has an inhomogeneous shape after 1 dimensions. # The detected shape was (2,) + inhomogeneous part. 

En dรฉfinissant ๐โ€Œ๐ญโ€Œ๐ฒโ€Œ๐ฉโ€Œ๐žโ€Œ=๐จโ€Œ๐›โ€Œ๐ฃโ€Œ๐žโ€Œ๐œโ€Œ๐ญโ€Œ , il est possible de crรฉer un ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ dont les รฉlรฉments sont des listes de longueurs variables. Avant la version 1.24, c’รฉtait le comportement par dรฉfaut.

a_2d_jagged = np.array(l_2d_jagged, dtype=object) print(a_2d_jagged) # [list([0, 1, 2]) list([3, 4])] print(a_2d_jagged.shape) # (2,) print(a_2d_jagged.dtype) # object print(a_2d_jagged[0]) # [0, 1, 2] print(type(a_2d_jagged[0])) # <class 'list'> 

Convertir un tableau NumPy en liste : ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ()

Vous pouvez convertir un tableau NumPy ( ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ ) en liste avec la mรฉthode ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() de ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ .

La mรฉthode ๐ญโ€Œ๐จโ€Œ๐ฅโ€Œ๐ขโ€Œ๐ฌโ€Œ๐ญโ€Œ() renvoie une structure de liste imbriquรฉe qui reflรจte le nombre de dimensions dans le ๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ d’origine .

Dans les exemples suivants, les tableaux NumPy sont crรฉรฉs ร  l’aide de ๐šโ€Œ๐ซโ€Œ๐šโ€Œ๐งโ€Œ๐ โ€Œ๐žโ€Œ() et ๐ซโ€Œ๐žโ€Œ๐ฌโ€Œ๐กโ€Œ๐šโ€Œ๐ฉโ€Œ๐žโ€Œ() .

Pour une dimension :

a_1d = np.arange(3) print(a_1d) # [0 1 2] l_1d = a_1d.tolist() print(l_1d) # [0, 1, 2] 

Pour deux dimensions :

a_2d = np.arange(6).reshape((2, 3)) print(a_2d) # [[0 1 2] # [3 4 5]] l_2d = a_2d.tolist() print(l_2d) # [[0, 1, 2], [3, 4, 5]] 

Pour les trois dimensions :

a_3d = np.arange(24).reshape((2, 3, 4)) print(a_3d) # [[[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] #  # [[12 13 14 15] # [16 17 18 19] # [20 21 22 23]]] l_3d = a_3d.tolist() print(l_3d) # [[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]] 

Chaque รฉlรฉment est accessible en rรฉpรฉtant l’index [๐งโ€Œ] .

print(l_3d[0]) # [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]] print(l_3d[0][0]) # [0, 1, 2, 3] print(l_3d[0][0][0]) # 0 

Notez que pour les tableaux ร  dimension zรฉro (scalaires), le rรฉsultat n’est pas une liste, mais plutรดt un objet du type Python correspondant, comme un entier ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ) ou un nombre ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ).

a_0d = np.array(100) print(a_0d) # 100 print(type(a_0d)) # <class 'numpy.ndarray'> i = a_0d.tolist() print(i) # 100 print(type(i)) # <class 'int'>