栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python dict到numpy结构化数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python dict到numpy结构化数组

您可以使用

np.array(list(result.items()), dtype=dtype)

import numpy as npresult = {0: 1.1181753789488595, 1: 0.5566080288678394, 2: 0.4718269778030734, 3: 0.48716683119447185, 4: 1.0, 5: 0.1395076201641266, 6: 0.20941558441558442}names = ['id','data']formats = ['f8','f8']dtype = dict(names = names, formats=formats)array = np.array(list(result.items()), dtype=dtype)print(repr(array))

产量

array([(0.0, 1.1181753789488595), (1.0, 0.5566080288678394),       (2.0, 0.4718269778030734), (3.0, 0.48716683119447185), (4.0, 1.0),       (5.0, 0.1395076201641266), (6.0, 0.20941558441558442)],       dtype=[('id', '<f8'), ('data', '<f8')])

如果您不想创建元组的中间列表

list(result.items())
,则可以改用
np.fromiter

在Python2中:

array = np.fromiter(result.iteritems(), dtype=dtype, count=len(result))

在Python3中:

array = np.fromiter(result.items(), dtype=dtype, count=len(result))

为什么使用该列表

[key,val]
不起作用:

顺便说一句,您的尝试,

numpy.array([[key,val] for (key,val) in result.iteritems()],dtype)

非常接近工作。如果将列表更改为

[key, val]
元组
(key, val)
,则它会起作用。当然,

numpy.array([(key,val) for (key,val) in result.iteritems()], dtype)

和…一样

numpy.array(result.items(), dtype)

在Python2中,或

numpy.array(list(result.items()), dtype)

在Python3中。


np.array
处理列表与元组的方法不同:Robert Kern解释说:

通常,将元组视为“标量”记录,然后重复列出。该规则有助于numpy.array()找出哪些序列是记录,哪些是要重现的其他序列;即哪些序列创建了另一个维度,哪些是原子元素。

由于

(0.0, 1.1181753789488595)
被认为是这些原子元素之一,因此它应该是一个元组,而不是列表。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号