为了账号安全,请及时绑定邮箱和手机立即绑定

如何从生成器构建numpy数组?

如何从生成器构建numpy数组?

翻翻过去那场雪 2019-09-21 11:15:36
如何从生成器对象构建numpy数组?让我说明一下这个问题:>>> import numpy>>> def gimme():...   for x in xrange(10):...     yield x...>>> gimme()<generator object at 0x28a1758>>>> list(gimme())[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> numpy.array(xrange(10))array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>> numpy.array(gimme())array(<generator object at 0x28a1758>, dtype=object)>>> numpy.array(list(gimme()))array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])在这种情况下,gimme()是生成器,我要将其输出转换为数组。但是,数组构造函数不会在生成器上进行迭代,它只是存储生成器本身。我想要的行为是来自numpy.array(list(gimme())),但是我不想支付同时拥有中间列表和最终数组的内存开销。有没有更节省空间的方法?
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

这个stackoverflow结果背后的一个Google,我发现有一个numpy.fromiter(data, dtype, count)。默认值count=-1从可迭代对象中获取所有元素。它需要dtype明确设置。就我而言,这可行:


numpy.fromiter(something.generate(from_this_input), float)


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 1064 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信