for循环python数组添加字典元素_不带for循环的numpy数组中的字典列表

以你的小例子来说,我很难找到比列表和字典理解结合更快的东西In [105]: timeit [{'x':i, 'y':j, 'z':k} for i,j,k in zip(x,y,z)]

100000 loops, best of 3: 15.5 µs per loop

In [106]: timeit [{'key':{'x':i, 'y':j, 'z':k}} for i,j,k in zip(x,y,z)]

10000 loops, best of 3: 37.3 µs per loop

在分区之前使用数组连接来连接数组的替代方法速度较慢。在

^{pr2}$

======================

结构化数组使用recfunctions最简单:In [109]: from numpy.lib import recfunctions

In [112]: M=recfunctions.merge_arrays((x,y,z))

In [113]: M.dtype.names=['x','y','z']

In [114]: M

Out[114]:

array([(0, 10, 100), (1, 11, 101), (2, 12, 102), (3, 13, 103),

(4, 14, 104), (5, 15, 105), (6, 16, 106), (7, 17, 107),

(8, 18, 108), (9, 19, 109)],

dtype=[('x', '

In [115]: M['x']

Out[115]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

时间要慢得多,但是如果您想一次访问所有的x值,这比从所有字典中获取它们要好得多。在np.rec.fromarrays((x,y,z),names=['x','y','z'])

生成具有给定名称的重新排列。速度差不多。在

我还可以构造一个具有正确数据类型和形状的空数组,并将数组复制到其中。这可能和这个一样快,但是描述起来更复杂。在

我建议优化数据结构以使用/访问,而不是构建速度。一般来说,一次构造,多次使用。在

==========In [125]: dt=np.dtype([('x',x.dtype),('y',y.dtype),('z',z.dtype)])

In [126]: xyz=np.zeros(x.shape,dtype=dt)

In [127]: xyz['x']=x; xyz['y']=y; xyz['z']=z

# or for n,d in zip(xyz.dtype.names, (x,y,z)): xyz[n] = d

In [128]: xyz

Out[128]:

array([(0, 10, 100), (1, 11, 101), (2, 12, 102), (3, 13, 103),

(4, 14, 104), (5, 15, 105), (6, 16, 106), (7, 17, 107),

(8, 18, 108), (9, 19, 109)],

dtype=[('x', '

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值