J'ai des données qui sont stockées dans un tableau numpy avec dtype=object
J'aimerais extraire une colonne de listes et la convertir en un tableau numpy. Cela semble être un problème simple, mais la seule façon que j'ai trouvée pour le résoudre est de refondre l'ensemble en une liste de listes, puis de la refondre en un tableau numpy. Existe-t-il une approche plus pythonique ?
import numpy as np
arr = np.array([[1, ['a', 'b', 'c']], [2, ['a', 'b', 'c']]], dtype=object)
arr = arr[:, 1]
print(arr)
# [['a', 'b', 'c'] ['a', 'b', 'c']]
type(arr)
# numpy.ndarray
type(arr[0])
# list
arr.shape
# (2,)
La refonte du tableau sous forme de dtype=str
soulève un ValueError
puisqu'il essaie de convertir chaque liste en chaîne de caractères.
arr.astype(str)
# ValueError: setting an array element with a sequence
Il est possible de reconstruire le tableau entier comme une liste de listes et de le convertir en tableau numpy, mais cela semble être un moyen détourné.
arr_2 = np.array(list(arr))
type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray
arr_2.shape
# (2, 3)
Existe-t-il une meilleure façon de procéder ?