Convierta una matriz numpy de listas en una matriz numpy
Tengo algunos datos que se almacenan como una matriz numpy condtype=object
, y me gustaría extraer una columna de listas y convertirla en una matriz numpy. Parece un problema simple, pero la única forma en que he encontrado para resolverlo es rehacer todo como una lista de listas y luego volver a fundirlo como una matriz numpy. ¿Es el, re un enfoque más pitónico?
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,)
Redefiniendo la matriz comodtype=str
plantea unValueError
ya que está tratando de convertir cada lista en una cadena.
arr.astype(str)
# ValueError: setting an array element with a sequence
Es posible reconstruir toda la matriz como una lista de listas y luego convertirla como una matriz numpy, pero esto parece una forma indirecta.
arr_2 = np.array(list(arr))
type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray
arr_2.shape
# (2, 3)
¿Hay una mejor manera de hacer esto?