Преобразовать массив списков в массив массивов
У меня есть некоторые данные, которые хранятся в виде массива сdtype=object
, и я хотел бы извлечь один столбец списков и преобразовать его в массив Numpy. Кажется, это простая проблема, но единственный способ, который я нашел для ее решения, состоит в том, чтобы переписать все это в виде списка списков, а затем преобразовать его в массив. Это более питонический подход?
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,)
Пересчет массива какdtype=str
поднимаетValueError
так как он пытается преобразовать каждый список в строку.
arr.astype(str)
# ValueError: setting an array element with a sequence
Можно перестроить весь массив в виде списка списков, а затем преобразовать его в пустой массив, но это выглядит как обходной путь.
arr_2 = np.array(list(arr))
type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray
arr_2.shape
# (2, 3)
Есть лучший способ сделать это?