具有混合数据类型的列表的Numpy dtype
问题内容:
我有一个列表,my_list
其中包含要转换为numpy数组的混合数据类型。但是,我得到了错误TypeError: expected a readable buffer object
。请参见下面的代码。我试图将代码建立在NumPy文档的基础上
。
my_list = [['User_0', '2012-2', 1, 6, 0, 1.0], ['User_0', '2012-2', 5, 6, 0, 1.0], ['User_0', '2012-3', 0, 0, 4, 1.0]]
my_np_array = np.array(my_list, dtype='S30, S8, i4, i4, f32')
问题答案:
为什么不使用dtype=object
?
In [1]: my_list = [['User_0', '2012-2', 1, 6, 0, 1.0], ['User_0', '2012-2', 5,
6, 0, 1.0], ['User_0', '2012-3', 0, 0, 4, 1.0]]
In [2]: my_np_array = np.array(my_list, dtype=object)
In [3]: my_np_array
Out[3]:
array([['User_0', '2012-2', 1, 6, 0, 1.0],
['User_0', '2012-2', 5, 6, 0, 1.0],
['User_0', '2012-3', 0, 0, 4, 1.0]], dtype=object)
注意
这是关于内存使用情况的,当您指定每列的dtype时,分配给您的内存ndarray
将小于您使用时dtype=object
包含python中所有可能类型的内存,因此分配给每列的内存将最大。