我有一些数据用numpy数组存储dtype=object
,我想提取列表的一列并将其转换为numpy数组。看来这是一个简单的问题,但是我发现解决此问题的唯一方法是将整个对象重铸为列表列表,然后将其重铸为numpy数组。还有更Python化的方法吗?
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,)
Run Code Online (Sandbox Code Playgroud)
将数组重铸为dtype=str
会引发一个,ValueError
因为它试图将每个列表转换为一个字符串。
arr.astype(str)
# ValueError: setting an array element with a sequence
Run Code Online (Sandbox Code Playgroud)
可以将整个数组重建为列表列表,然后将其强制转换为numpy数组,但这似乎是一种回旋方式。
arr_2 = np.array(list(arr))
type(arr_2)
# numpy.ndarray
type(arr_2[0])
# numpy.ndarray
arr_2.shape
# (2, 3)
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?