web-dev-qa-db-fra.com

Conversion du tableau NumPy en Python Structure de liste?

Comment convertir un tableau NumPy en une liste Python (par exemple [[1,2,3],[4,5,6]]) et le faire assez rapidement?

251
Alex Brooks

Utilisez tolist() :

import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]

Notez que cela convertit les valeurs de tout type numpy qu’elles peuvent avoir (par exemple, np.int32 ou np.float32) en "type compatible le plus proche Python" (dans une liste). Si vous voulez conserver les types de données numpy, vous pouvez appeler list () sur votre tableau à la place et vous obtiendrez une liste de numpy scalars . (Merci à Mr_and_Mrs_D pour l'avoir signalé dans un commentaire.)

364
Peter Hansen

La méthode numpy .tolist génère des tableaux imbriqués si la forme du tableau numpy est 2D.

si des listes à plat sont souhaitées, la méthode ci-dessous fonctionne.

import numpy as np
from itertools import chain

a = [1,2,3,4,5,6,7,8,9]
print type(a), len(a), a
npa = np.asarray(a)
print type(npa), npa.shape, "\n", npa
npa = npa.reshape((3, 3))
print type(npa), npa.shape, "\n", npa
a = list(chain.from_iterable(npa))
print type(a), len(a), a`
8
aspiringGuru

tolist() fonctionne bien même si vous rencontrez un tableau imbriqué, disons un pandas DataFrame;

my_list = [0,1,2,3,4,5,4,3,2,1,0]
my_dt = pd.DataFrame(my_list)
new_list = [i[0] for i in my_dt.values.tolist()]

print(type(my_list),type(my_dt),type(new_list))
2
Hamidreza

someList = [list(map(int, input().split())) for i in range(N)]

0
Ganesh Jadhav