您现在的位置是:首页 > 文章详情

python技巧(1)--如何转换itertools.chain对象为数组

日期:2020-02-08点击:485

云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

之前做1月总结的时候说过希望每天或者每2天开始的更新一些学习笔记,这是开始的第一篇。

这篇介绍的是如何把一个 itertools.chain 对象转换为一个数组。

参考 stackoverflow 上的一个回答:Get an array back from an itertools.chain object,

例子:

list_of_numbers = [[1, 2], [3], []] import itertools chain = itertools.chain(*list_of_numbers) 

解决方法有两种:

第一种比较简单,直接采用 list 方法,如下所示:

list(chain) 

但缺点有两个:

会在外层多嵌套一个列表

效率并不高

第二个就是利用 numpy 库的方法 np.fromiter,示例如下:

>>> import numpy as np >>> from itertools import chain >>> list_of_numbers = [[1, 2], [3], []] >>> np.fromiter(chain(*list_of_numbers), dtype=int) array([1, 2, 3]) 

对比两种方法的运算时间,如下所示:

>>> list_of_numbers = [[1, 2]*1000, [3]*1000, []]*1000 >>> %timeit np.fromiter(chain(*list_of_numbers), dtype=int) 10 loops, best of 3: 103 ms per loop >>> %timeit np.array(list(chain(*list_of_numbers))) 1 loops, best of 3: 199 ms per loop 

可以看到采用 numpy 方法的运算速度会更快。

云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

原文发布时间:2020-02-08
本文作者:kbsc13
本文来自:“AI派公众号”,了解相关信息可以关注“AI派

原文链接:https://yq.aliyun.com/articles/744092
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章