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.
- Notes de version de NumPy 1.24 – Obsolescences expirรฉes โ Manuel NumPy v1.26
- NEP 34 โ Interdire la dรฉduction de dtype=object ร partir de sรฉquences โ Propositions d’amรฉlioration de NumPy
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 ๐ซโ๐โ๐ฌโ๐กโ๐โ๐ฉโ๐โ() .
- numpy.arange(), linspace() : gรฉnรฉrer un ndarray avec des valeurs identiques espacรฉes
- NumPy : Comment utiliser reshape() et la signification de -1
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'>
