Converter uma matriz numpy de listas em uma matriz numpy
Eu tenho alguns dados que são armazenados como uma matriz numpy comdtype=object
, e gostaria de extrair uma coluna de listas e convertê-la em uma matriz numpy. Parece um problema simples, mas a única maneira que encontrei para resolvê-lo é reformular a coisa toda como uma lista de listas e, em seguida, reformulá-la como uma matriz numpy. A abordagem re é mais pitônica?
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,)
Reformulando a matriz comodtype=str
levanta umValueError
pois está tentando converter cada lista em uma string.
arr.astype(str)
# ValueError: setting an array element with a sequence
É possível reconstruir toda a matriz como uma lista de listas e depois convertê-la em uma matriz numpy, mas isso parece uma maneira indireta.
arr_2 = np.array(list(arr))
type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray
arr_2.shape
# (2, 3)
Existe uma maneira melhor de fazer isso?