我有一些数据是以
dtype=object
的numpy数组形式存储的,我想提取一列列表并将其转换成numpy数组。 这似乎是一个简单的问题,但我发现解决它的唯一方法是把整个东西重铸为一个列表,然后再重铸为一个numpy数组。 是否有更多的pythonic方法?
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
可以把整个数组重建为一个列表,然后把它投成一个numpy数组,但这似乎是一个迂回的方法。
arr_2 = np.array(list(arr))
type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray
arr_2.shape
# (2, 3)
有什么更好的方法吗?