首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有混合数据类型的列表的Numpy dtype

具有混合数据类型的列表的Numpy dtype
EN

Stack Overflow用户
提问于 2015-06-09 18:54:29
回答 2查看 7K关注 0票数 7

我有一个名为my_list的列表,其中包含要转换为numpy数组的混合数据类型。但是,我得到了错误TypeError: expected a readable buffer object。请参阅下面的代码。我试图将我的代码建立在NumPy文档上。

代码语言:javascript
复制
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')   
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-09 19:26:51

为什么不使用dtype=object

代码语言:javascript
复制
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)

备注--这是关于内存使用的问题,当您指定每个列的d类型时,分配给ndarray的内存将比使用dtype=object时少,因为dtype=object包含了python中所有可能的类型,因此为每个列分配的内存将是最大的。

票数 13
EN

Stack Overflow用户

发布于 2015-06-09 19:01:43

嵌套项应该是tuple,并且在类型中省略了一个i4

代码语言:javascript
复制
>>> my_np_array = np.array(map(tuple,my_list), dtype='|S30, |S8, i4, i4, i4, f32')  
>>> my_np_array
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=[('f0', 'S30'), ('f1', 'S8'), ('f2', '<i4'), ('f3', '<i4'), ('f4', '<i4'), ('f5', '<f4')])

据了解,由于numpy使用元组来保留其类型,当您对数组项使用多个类型时,需要将您的子数组转换为象dtype元素那样的元组。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30740490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档