Comment puis-je convertir un tableau NumPy en une liste Python (par exemple [[1,2,3],[4,5,6]]
) et le faire assez rapidement?
298
Utilisation 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 n'importe quel type numpy qu'ils peuvent avoir (par exemple np.int32 ou np.float32) en "type Python compatible le plus proche" (dans une liste). Si vous souhaitez conserver les types de données numpy, vous pouvez appeler list () sur votre tableau à la place, et vous vous retrouverez avec une liste de scalaires numpy . (Merci à Mr_and_Mrs_D de l'avoir signalé dans un commentaire.)
tolist
convertira enfloats
s - ce n'est probablement pas souhaité. L'utilisationlist(myarray)
n'en souffre pas - pourquoi devrions-nous préférertolist
?myarray.astype(np.int32).tolist()
serait une option, et explicite sur ce que vous essayez d'accomplir. (Et enfin,list(array_of_type_float32)
ne donne pas d'entiers ici quand je l'ai essayé ... donc je ne sais pas ce que vous demandez.)float32_array = np.array([0.51764709], np.float32); print(float32_array.tolist()); print(list(float32_array))
np.array([[0, 'one'], ['two', 3]]).tolist() -> [['0', 'one'], ['two', '3']]
La méthode numpy .tolist produit des listes imbriquées si la forme du tableau numpy est 2D.
si des listes plates sont souhaitées, la méthode ci-dessous fonctionne.
la source
tolist()
fonctionne bien même en cas de rencontre avec un tableau imbriqué, par exemple un pandasDataFrame
;la source
someList = [list(map(int, input().split())) for i in range(N)]
la source
c = np.array ([[1,2,3], [4,5,6]])
la source